Avatar billede a68254 Nybegynder
20. august 2010 - 19:03 Der er 4 kommentarer

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 ?
Avatar billede a68254 Nybegynder
20. august 2010 - 19:07 #1
Hov manglede lige at få det sidste og vigtigste med fra min my.cnf

query_cache_limit      = 4M
query_cache_size        = 256M
Avatar billede arne_v Ekspert
21. august 2010 - 09:56 #2
De queries som er "stoerre" er de:
- kompleks SQL
- returnerer store data maengder
- begge
?
Avatar billede a68254 Nybegynder
21. august 2010 - 14:04 #3
Ja, går stærkt udfra det er begge, er ikke så meget inde i koden, da jeg ikke er programmør, men mig der i sidste ende sidder med kunden i røret når serveren er langsom. Går dufra jeg i samarbejde med programmørerne må lave noget måling på queries og data transfer. Syntes bare det virker voldsomt at det kan give så stort et overhead.
Avatar billede arne_v Ekspert
21. august 2010 - 15:40 #4
Det lyder ogsaa som en stor forskel.

Men det er svaert at troubleshoote uden flere informationer om problemet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester