Mysql TCP Overhead
Har for nyligt flyttet en "større" mysql database 1.6GB til en remote server, svartiderne ved større queries gennem Java kode jdbc er blevet uhyggeligt langsomme 50-75% langsommere end da basen var på den samme server (Bemærk kørte ikke socket men IP på 127.0.0.1). Min my.cnf har skip-name-resolve og smækket begge servere med navn og domain i /etc/hosts filen, kører kun på IP'er, ved connect til database i linux consol og via alm. mysql browser er connection næsten instant og selve netværket flyder fint 1GB hele vejen igennem, større queries er også meget hurtigere end på andre af mine servere.Både frontend og DB server ligger på samme switch i netværket og det er de eneste 2 servere på den switch. Jeg er klar over at det kan være queries i koden der er uoptimerede, men kan det virkeligt passe det kan give så stort et overhead at flytte den ud på remote TCP. Selve Database serveren er et monster : dual 6 core med 12GB RAM og de rigtige server SSD diske på en debian 64bit installation uden X.
Har testet på forskellige frontends (Java) på samme netværk og opnået ligeså dårlige resultater.
Her er min my.cnf, har brugt primersql og mysql-tuner til at konfigurere my.cnf løbende, den ser pt. således ud :
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
bind-address = 10.0.0.126
skip-name-resolve
#
# * Fine Tuning
#
key_buffer = 512M
max_allowed_packet = 16M
thread_stack = 128K
thread_cache_size = 256
max_heap_table_size = 512M
tmp_table_size = 256M
open-files-limit = 1000000
max_connections = 884
join_buffer_size=1M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=4M
Spørgsmålet er, har jeg overset noget ? Kan netværket tunes specifikt til sql queries og mysql ?