andycole 0 Zgłoś post Napisano Listopad 26, 2009 Witam, Moj serwis jest serwisem o tematyce okresowej, czyli jak nie ma ludzi to nie ma a jak sa, to jest ich ponad 1300 online przez kilkanascie minut w tygodniu Ostatnio zoptymalizowalem swoje skrypty pod katem MySQL, dodalem indeksy, 'ponaprawialem' zapytania znajdujace sie w dzienniku zapytan, ktore nie uzywaja indeksow. Dodalem cachowanie calych stron html do plikow. Przy pierwszym, duzym obciazeniu mialem ustawione max user connections = 22, wiec skonczylo sie tym ze brakowalo slotow mysql. Na drugi dzien zwiekszylem wiec max user connections = 80 majac nadzieje, ze ta ilosc slotow w bazie wystarczy, a jednoczesniej sprawi, ze nie wpuszcze na jeden raz tyle typa, ze serwer padnie. No i mam mieszane odczucia, bo poniewaz - max_used_connections = 52, wiec ilosc slotow wystarczyla i nikt nie widzialem komunikatu, ze nie mozna polaczyc sie z baza danych - proces mysqld w "top" tez nie zjadal az tak strasznej ilosci pamieci i cpu a jednak serwer zamulil... dziwi mnie to wszystko, bo ilosc online byla porownywalna do tej sprzed optymalizacji Ponizej wklejam logi i configi... Moze jakas madra glowa pomoze mi je przeanalizowac i wyciagnac jakies sensowne wnioski log z top, z czasu najwiekszego obciazenia: top - 22:48:09 up 2:23, 2 users, load average: 17.20, 24.17, 13.5439;49m Tasks:39;49m 265 39;49mtotal,39;49m 3 39;49mrunning,39;49m 262 39;49msleeping,39;49m 0 39;49mstopped,39;49m 0 39;49mzombie39;49m Cpu(s):39;49m 49.5%39;49mus,39;49m 23.3%39;49msy,39;49m 0.0%39;49mni,39;49m 24.9%39;49mid,39;49m 0.0%39;49mwa,39;49m 0.0%39;49mhi,39;49m 1.3%39;49msi,39;49m 1.0%39;49mst39;49m Mem: 39;49m 1026196k 39;49mtotal,39;49m 942484k 39;49mused,39;49m 83712k 39;49mfree,39;49m 24192k 39;49mbuffers39;49m Swap:39;49m 262136k 39;49mtotal,39;49m 0k 39;49mused,39;49m 262136k 39;49mfree,39;49m 398664k 39;49mcached39;49m[6;1H PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 39;49m 6113 apache 15 0 21220 10m 3396 S 7.7 1.0 0:02.23 httpd 39;49m 1211 mysql 15 0 633m 55m 4916 S 2.0 5.6 4:39.00 mysqld 39;49m 6201 apache 16 0 21164 10m 3380 S 2.0 1.0 0:01.24 httpd 39;49m 6361 apache 16 0 21180 10m 3364 S 2.0 1.0 0:00.24 httpd 39;49m 6032 apache 15 0 21152 10m 3372 S 1.7 1.0 0:01.65 httpd 39;49m 6051 apache 16 0 21232 10m 3396 S 1.7 1.0 0:02.28 httpd 39;49m 6127 apache 15 0 21272 10m 3388 S 1.7 1.0 0:02.15 httpd 39;49m 6142 apache 15 0 21180 10m 3404 S 1.7 1.0 0:01.41 httpd 39;49m 6224 apache 16 0 21252 10m 3404 S 1.7 1.0 0:02.14 httpd 39;49m 6227 apache 15 0 21188 10m 3388 S 1.7 1.0 0:01.38 httpd 39;49m 6229 apache 15 0 21180 10m 3372 S 1.7 1.0 0:01.21 httpd 39;49m 5938 apache 16 0 21224 10m 3396 S 1.3 1.0 0:02.51 httpd 39;49m 5950 apache 15 0 21240 10m 3376 S 1.3 1.0 0:02.67 httpd 39;49m 6083 apache 15 0 21144 10m 3368 S 1.3 1.0 0:02.12 httpd 39;49m 6089 apache 15 0 21252 10m 3396 S 1.3 1.0 0:02.04 httpd 39;49m 6137 apache 16 0 21284 10m 3396 S 1.3 1.0 0:02.08 httpd 39;49m 6206 apache 16 0 21140 10m 3352 S 1.3 1.0 0:01.31 httpd 39;49m vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 141100 29412 403204 0 0 36 196 827 444 17 9 66 4 7 0 0 133288 29428 403572 0 0 0 270 1818 618 29 19 46 1 16 0 0 106136 29444 403908 0 0 0 326 1712 570 57 30 7 0 0 0 0 121688 29468 404324 0 0 0 270 1820 616 38 22 36 1 5 0 0 103064 29488 404708 0 0 0 255 1895 681 39 23 35 0 11 0 0 85392 29524 405116 0 0 0 367 1988 625 46 25 25 0 34 0 0 74784 29548 405696 0 0 0 374 2167 499 61 34 0 0 34 0 0 73684 29560 406200 0 0 0 302 1882 506 55 35 0 0 16 0 0 69360 29584 406800 0 0 0 314 2035 512 56 36 2 0 49 0 0 41792 29600 407248 0 0 0 366 2292 468 59 35 0 0 54 0 0 18928 29628 407804 0 0 0 310 2277 509 61 34 1 0 69 0 0 7440 29644 408308 0 0 0 306 2138 468 57 37 0 0 72 0 0 9896 25084 406152 0 0 0 295 2004 467 57 36 0 0 73 1 0 26536 24404 402732 0 0 1 371 2161 463 65 32 0 0 95 0 0 21972 24424 403176 0 0 0 306 2042 436 56 37 0 0 48 0 0 21716 24468 403644 0 0 1 393 2107 507 63 34 0 0 56 0 0 35048 24484 404176 0 0 2 374 2134 489 57 40 0 0 14 0 0 36464 24516 404644 0 0 0 323 2141 509 59 39 0 0 97 0 0 8788 24008 400028 0 0 0 318 2087 482 58 33 0 0 my.cnf: [mysqld] max_user_connections=80 key_buffer = 256M sort_buffer = 16M join_buffer_size = 16M read_buffer_size = 8M read_rnd_buffer_size = 12M max_allowed_packet = 128M ### Global variables ### table_cache = 16384 thread_stack = 512K thread_cache_size = 384 wait_timeout = 80 myisam_sort_buffer_size = 64M tmp_table_size = 256M binlog_cache_size = 65536 max_heap_table_size = 256M tmp_table_size = 256M thread_concurrency = 8 query_cache_limit = 3M query_cache_size = 256M query_cache_type = 1 long_query_time = 1 log_error = error.dat log-slow-queries = slow.dat log-queries-not-using-indexes #skip-innodb Rodzaje zapytan: set option 80 k 13,24 k 24,46% select 49 k 8 141,53 15,03% change db 72 k 12,04 k 22,24% delete 3 890 646,18 1,19% insert 16 k 2 710,63 5,01% update 13 k 2 199,83 4,06% Niektore pozycje SHOW STATUS mysql: Handler_read_rnd 155 k Handler_read_rnd_next 41 M Slow_launch_threads 10 Created_tmp_disk_tables 60 Table_locks_waited 44 Opened_tables 224 I jeszcze pytanie na koniec, jak sprawdzic jaki mam procesor? bo ramu wiem, ze jest 1gb Pozdrawiam Udostępnij ten post Link to postu Udostępnij na innych stronach
tryme 0 Zgłoś post Napisano Listopad 26, 2009 http://hackmysql.com/mysqlreport http://rackerhacker.com/tag/mysqltuner/ http://www.day32.com/MySQL/ Udostępnij ten post Link to postu Udostępnij na innych stronach
andycole 0 Zgłoś post Napisano Listopad 26, 2009 W zasadzie wiekszosc logow z tych skryptow jest poprawna. Jak mozna zmniejszyc obciazenie procesora? Moze wywalic jakies moduly apache? Udostępnij ten post Link to postu Udostępnij na innych stronach
Wojciech Małota 0 Zgłoś post Napisano Listopad 26, 2009 W zasadzie wiekszosc logow z tych skryptow jest poprawna. Jak mozna zmniejszyc obciazenie procesora? Moze wywalic jakies moduly apache? A może po prostu Twój sprzęt osiągnął kres swych możliwości. To się jednak czasem zdarza . Udostępnij ten post Link to postu Udostępnij na innych stronach
huan 18 Zgłoś post Napisano Listopad 26, 2009 Proponuje wykonanie trzech podstawowych rzeczy: 1. najważniejsza - zmiana Apache'a na coś szybszego np. lighttpd lub nginx z PHP-FPM 2. Zainstalowanie akceleratora PHP np. Xcache 3. info dot. MySQL jest niewystarczające - nie mówi nic o wykorzystaniu buforów. Ściągnij mysqlreport i wrzuć tutaj wynik jego działania PS. informacje dotyczące procesora odczytasz uruchamiając: cat /proc/cpuinfo Udostępnij ten post Link to postu Udostępnij na innych stronach
ahes 83 Zgłoś post Napisano Listopad 27, 2009 Mam dla ciebie bardzo istotnego hinta. Nie zawsze duże wartości buforów wpływają pozytywnie na wydajność MySQL. Mogę zerknąć na tą bazę i ci to zoptymalizować. Udostępnij ten post Link to postu Udostępnij na innych stronach
andycole 0 Zgłoś post Napisano Listopad 27, 2009 1. najważniejsza - zmiana Apache'a na coś szybszego np. lighttpd lub nginx z PHP-FPM 2. Zainstalowanie akceleratora PHP np. Xcache 3. info dot. MySQL jest niewystarczające - nie mówi nic o wykorzystaniu buforów. Ściągnij mysqlreport i wrzuć tutaj wynik jego działania 1. Hmn, nigdy tego nie robilem i troche boje sie takiej ingerencji w serwer, ale do odwaznych swiat nalezy poszukam jakiegos manuala i sprobuje 2. jw. 3. ponizej mysqlreport MySQL 5.0.67-log uptime 0 20:46:41 Thu Nov 26 17:05:21 2009 __ Key _________________________________________________________________ Buffer used 42.15M of 256.00M %Used: 16.46 Current 34.03M %Usage: 13.29 Write hit 31.60% Read hit 99.41% __ Questions ___________________________________________________________ Total 816.91k 10.9/s Com_ 292.99k 3.9/s %Total: 35.87 DMS 196.77k 2.6/s 24.09 QC Hits 189.07k 2.5/s 23.14 COM_QUIT 137.96k 1.8/s 16.89 +Unknown 123 0.0/s 0.02 Slow 1 s 14.99k 0.2/s 1.84 %DMS: 7.62 Log: ON DMS 196.77k 2.6/s 24.09 SELECT 120.56k 1.6/s 14.76 61.27 UPDATE 33.33k 0.4/s 4.08 16.94 INSERT 29.07k 0.4/s 3.56 14.77 DELETE 13.80k 0.2/s 1.69 7.01 REPLACE 0 0/s 0.00 0.00 Com_ 292.99k 3.9/s 35.87 set_option 154.52k 2.1/s 18.91 change_db 137.50k 1.8/s 16.83 show_variab 204 0.0/s 0.02 __ SELECT and Sort _____________________________________________________ Scan 14.82k 0.2/s %SELECT: 12.29 Range 16.04k 0.2/s 13.30 Full join 14 0.0/s 0.01 Range check 0 0/s 0.00 Full rng join 3 0.0/s 0.00 Sort scan 3.68k 0.0/s Sort range 2.84k 0.0/s Sort mrg pass 0 0/s __ Query Cache _________________________________________________________ Memory usage 2.23M of 256.00M %Used: 0.87 Block Fragmnt 14.54% Hits 189.07k 2.5/s Inserts 102.84k 1.4/s Insrt:Prune 102.84k:1 1.4/s Hit:Insert 1.84:1 __ Table Locks _________________________________________________________ Waited 77 0.0/s %Total: 0.03 Immediate 255.74k 3.4/s __ Tables ______________________________________________________________ Open 201 of 1638 %Cache: 1.23 Opened 479 0.0/s __ Connections _________________________________________________________ Max used 52 of 100 %Max: 52.00 Total 137.96k 1.8/s __ Created Temp ________________________________________________________ Disk table 393 0.0/s Table 7.31k 0.1/s Size: 256.0M File 7 0.0/s __ Threads _____________________________________________________________ Running 1 of 1 Cached 51 of 384 %Hit: 99.96 Created 52 0.0/s Slow 10 0.0/s __ Aborted _____________________________________________________________ Clients 0 0/s Connects 36 0.0/s __ Bytes _______________________________________________________________ Sent 2.80G 37.4k/s Received 66.92M 894.6/s __ InnoDB Buffer Pool __________________________________________________ Usage 592.00k of 8.00M %Used: 7.23 Read hit 99.78% Pages Free 475 %Total: 92.77 Data 37 7.23 %Drty: 0.00 Misc 0 0.00 Latched 0 0.00 Reads 9.62k 0.1/s From file 21 0.0/s 0.22 Ahead Rnd 2 0.0/s Ahead Sql 0 0/s Writes 1 0.0/s Flushes 1 0.0/s Wait Free 0 0/s __ InnoDB Lock _________________________________________________________ Waits 0 0/s Current 0 Time acquiring Total 0 ms Average 0 ms Max 0 ms __ InnoDB Data, Pages, Rows ____________________________________________ Data Reads 37 0.0/s Writes 7 0.0/s fsync 7 0.0/s Pending Reads 0 Writes 0 fsync 0 Pages Created 0 0/s Read 37 0.0/s Written 1 0.0/s Rows Deleted 0 0/s Inserted 0 0/s Read 38 0.0/s Updated 0 0/s CPU processor : 0 vendor_id : AuthenticAMD cpu family : 15 model : 75 model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ stepping : 2 cpu MHz : 2210.224 cache size : 512 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc bogomips : 5527.80 Mam dla ciebie bardzo istotnego hinta. Nie zawsze duże wartości buforów wpływają pozytywnie na wydajność MySQL. Mogę zerknąć na tą bazę i ci to zoptymalizować. Bufory zostaly tak ustawione przez adminow, po moich zgloszeniach (jeszcze przed optymalizacja schematu i zapytan SQL), ze mysql sie muli. A co proponujesz? Udostępnij ten post Link to postu Udostępnij na innych stronach
huan 18 Zgłoś post Napisano Listopad 27, 2009 Możesz spokojnie zmniejszyć key_buffer i query_cache, bo i tak nie są wykorzystywane w tak dużym stopniu, co pokazuje mysqlreport (np. query_cache wykorzystane jedynie 2,2MB z 256MB przydzielonych), a wolna pamięc bardziej przydałaby się serwerowi Apache i cachowaniu dysku twardego. Zresztą inne ustawienia też są trochę spore, jak na serwer z 1GB RAM. Więc w my.cnf zmień na: key_buffer = 96M query_cache_size = 32M i ewentualnie: join_buffer_size = 8M read_buffer_size = 1M read_rnd_buffer_size = 1M i potem zrestartuj serwer mysql, żeby zmiany weszły w życie. Ale i tak przejście z Apache'a na Nginxa przyśpieszy dodatkowo serwer. Udostępnij ten post Link to postu Udostępnij na innych stronach
pawelk 0 Zgłoś post Napisano Listopad 27, 2009 ja za to polecałbym zainstalowanie memcache i/lub apc i zrzucać dane z bazy do cache i po cache rzeźbić a nie po bazie, uwierz - wielkie serwisy właśnie po cache rzeźbią bo taniej jest kupić ramu niż całą maszynę Udostępnij ten post Link to postu Udostępnij na innych stronach
andycole 0 Zgłoś post Napisano Listopad 27, 2009 Nie no Panie, na glownej mam 0-1 zapytan do bazy. Wszystko cache'uje ale nie do ramu tylko na dysk (LiteCache). Co do konfiguracji, walcze z tym, zobaczymy przy nastepnej burzy Dziekuje Udostępnij ten post Link to postu Udostępnij na innych stronach
pawelk 0 Zgłoś post Napisano Listopad 27, 2009 Nie no Panie, na glownej mam 0-1 zapytan do bazy. Wszystko cache'uje ale nie do ramu tylko na dysk (LiteCache). Co do konfiguracji, walcze z tym, zobaczymy przy nastepnej burzy Dziekuje Cache na dysk to samobójstwo wydajnościowe w porównaniu z wydajnością memcache. Dodatkowo Ty musisz zrzucać kompletne strony, a w memcache możesz konkretne obiekty w php sobie cache'ować. Aktualnie pracuje w firmie, która prowadzi 19 sporych projektów (najmniejszy ma 8k uu / h), gdyby nie memcache było by ciężko Udostępnij ten post Link to postu Udostępnij na innych stronach
andycole 0 Zgłoś post Napisano Listopad 29, 2009 Zmniejszylem wielkosci buforow, bo faktycznie wykorzystywany byl tylko ich skrawek. Co dokladnie zamiast Apache'a polecilibyscie poczatkujacemu? Zalezy mi na w miare latwej i nieskomplikowanej instalacji/zamianie apacha na jego alternatywe. Co do memcache, dzieki, tez sie tym bede musial zainteresowac. Udostępnij ten post Link to postu Udostępnij na innych stronach
Mateusz Sojda 41 Zgłoś post Napisano Listopad 30, 2009 nginx + php-fpm Udostępnij ten post Link to postu Udostępnij na innych stronach
andycole 0 Zgłoś post Napisano Grudzień 8, 2009 powiedzcie mi czy nginx zmniejszy duzo obciazenie procesora, zuzycie ramu przez procesy Apache i load average (mialem w porywach nawet 200 :/)? top - 22:59:53 up 8 days, 23:19, 1 user, load average: 5.36, 31.98, 57.5939;49mK Tasks:39;49m 86 39;49mtotal,39;49m 2 39;49mrunning,39;49m 84 39;49msleeping,39;49m 0 39;49mstopped,39;49m 0 39;49mzombie39;49mK Cpu(s):39;49m 26.0%39;49mus,39;49m 20.7%39;49msy,39;49m 0.0%39;49mni,39;49m 52.0%39;49mid,39;49m 0.0%39;49mwa,39;49m 0.0%39;49mhi,39;49m 0.7%39;49msi,39;49m 0.7%39;49mst39;49mK Mem: 39;49m 1026196k 39;49mtotal,39;49m 429044k 39;49mused,39;49m 597152k 39;49mfree,39;49m 15616k 39;49mbuffers39;49mK Swap:39;49m 262136k 39;49mtotal,39;49m 32k 39;49mused,39;49m 262104k 39;49mfree,39;49m 129444k 39;49mcached39;49mK 6;1H 7m PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 39;49mK 8148 apache 15 0 21236 10m 3396 S 3.3 1.0 0:04.82 httpd 39;49m 3682 apache 15 0 21244 10m 3404 S 3.0 1.0 0:07.35 httpd 39;49m 16152 apache 15 0 21192 10m 3364 S 3.0 1.0 0:00.31 httpd 39;49m 8017 apache 15 0 21196 10m 3396 S 2.7 1.0 0:05.43 httpd 39;49m 16138 apache 15 0 21196 10m 3392 S 2.7 1.0 0:00.78 httpd 39;49m 16145 apache 15 0 21228 10m 3372 S 2.7 1.0 0:01.03 httpd 39;49m 8481 apache 15 0 21164 10m 3384 S 2.3 1.0 0:02.90 httpd 39;49m 16148 apache 15 0 21128 10m 3372 S 2.3 1.0 0:00.26 httpd 39;49m 3611 apache 15 0 21276 10m 3400 S 2.0 1.0 0:07.61 httpd 39;49m 8227 apache 15 0 21192 10m 3396 S 2.0 1.0 0:03.62 httpd 39;49m 8031 apache 15 0 21252 10m 3404 S 1.7 1.0 0:05.61 httpd 39;49m 8127 apache 15 0 21196 10m 3396 S 1.7 1.0 0:04.35 httpd 39;49m 8383 apache 15 0 21252 10m 3400 S 1.7 1.0 0:03.55 httpd 39;49m 16144 apache 15 0 21172 10m 3372 S 1.7 1.0 0:00.34 httpd 39;49m 7473 apache 15 0 21288 10m 3392 S 1.3 1.0 0:05.47 httpd 39;49m 7490 apache 15 0 21292 10m 3672 S 1.3 1.1 0:05.70 httpd 39;49m 8352 apache 15 0 21228 10m 3396 S 1.3 1.0 0:04.31 httpd 39;49m6; Udostępnij ten post Link to postu Udostępnij na innych stronach
huan 18 Zgłoś post Napisano Grudzień 8, 2009 tak Udostępnij ten post Link to postu Udostępnij na innych stronach
andycole 0 Zgłoś post Napisano Grudzień 8, 2009 wyczytalem ze nginx nie obsluguje standardowo htcaccessow, a ja mam SEO linki, uzywam mod_rewrite... czy z uwagi na to nie lepiej byloby wrzucic Lighttpd ? Udostępnij ten post Link to postu Udostępnij na innych stronach
huan 18 Zgłoś post Napisano Grudzień 8, 2009 Lighttpd też nie obsługuje mod_rewrite w wersji Apache'owej, ale każde reguły rewrite można przepisać do wersji dla nginx lub lighttpd (mając jakieś o tym pojęcie ) Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Grudzień 9, 2009 Może Litespeed? Udostępnij ten post Link to postu Udostępnij na innych stronach