Skocz do zawartości
Zaloguj się, aby obserwować  
andycole

nginx+php_fpm+mysql pomoc w optymalizacji configu

Polecane posty

Witam,

 

Mój VPS to:

2x Intel® Xeon E5520 @ 2.27GHz

4 GB RAM

 

Próbuję jak najoptymalniej go skonfigurować, ale miotam się trochę jak dziecko we mgle. Poszukuję jakiejś dobrej duszy, która pomoże w zoptymalizowaniu konfiguracji serwera albo dobrego specjalisty, który pomoże profesjonalnie - odpłatnie.

 

Ustawienia mysql:

 

[mysqld]
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
max_connections=70
max_user_connections=30
read_buffer_size = 8M
read_rnd_buffer_size = 8M
sort_buffer = 16M
join_buffer_size = 2M
key_buffer = 256M
query_cache_size = 32M
max_heap_table_size = 256M
tmp_table_size = 256M
max_allowed_packet = 128M
table_cache = 1024
### Global variables ###
thread_stack = 512K
thread_cache_size = 384
wait_timeout = 80
myisam_sort_buffer_size = 64M
binlog_cache_size = 65536
max_join_size = 8M
thread_concurrency = 4
query_cache_limit = 3M
query_cache_type = 1
query_cache_min_res_unit = 1024
#low_priority_updates = 1
long_query_time = 1
log_error = error.dat
log-slow-queries = slow.dat
log-queries-not-using-indexes
skip-innodb
skip-name-resolve
skip-bdb

 

nginx

 

worker_processes  2;
#worker_rlimit_nofile 3000;
user apache;
events{
worker_connections  1024;
}
http{
include mime.types;
default_type application/octet-stream;
server_tokens off;
access_log off;

open_file_cache max=2000 inactive=1m;
open_file_cache_valid 1m;
open_file_cache_min_uses 3;
open_file_cache_errors on;

fastcgi_buffer_size 4k;
fastcgi_buffers 256 4k;
fastcgi_max_temp_file_size 0;

#proxy_buffers 256 4k;
#proxy_max_temp_file_size 0;
gzip on;
gzip_min_length 2000;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

include /usr/local/nginx/conf/vhosts/*;
}

 

php fpm

 

emergency_restart_threshold 10
emergency_restart_interval 1m
process_control_timeout 5s
daemonize yes
max_children 25
StartServers 10
MinSpareServers 5
MaxSpareServers 20
request_terminate_timeout 15s
request_slowlog_timeout 5s
rlimit_files 0
rlimit_core 0
max_requests 600

 

memcached ustawiony na 128mb, zużycie na poziomie 3%

 

zrzut z iostat:

 

Linux 2.6.18-194.8.1.el5.028stab070.5PAE (vps)  03/31/12  _i686_
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
	   3.63	0.00	1.60   18.47	0.00   76.30

 

Load utrzymuje się na poziomie ok 1. Na liście procesów nie widać jakiegoś specjalnie dużego obciążenia, ale iowait skacze i to wysoko.

 

 

Status mysqla zwraca mi:

[/left]


[left]Created_tmp_tables 351
Created_tmp_disk_tables 64
Open_tables 387
Opened_tables 393

 

Podejrzewam, że wina leży właśnie po stronie mysqla - tworzone są tabele na dysku. Tylko jak sobie z tym poradzić? Wydaje mi się że

max_heap_table_size = 256M
tmp_table_size = 256M
table_cache = 1024

 

są wystarczające.... Jak uważacie?

 

 

Może dałoby radę też zoptymalizować ustawienia nginx/php fcgi dla większej wydajności?

 

Pozdrawiam

andycole

Edytowano przez andycole (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Witam,

 

Mój VPS to:

2x Intel® Xeon E5520 @ 2.27GHz

4 GB RAM

 

Próbuję jak najoptymalniej go skonfigurować, ale miotam się trochę jak dziecko we mgle. Poszukuję jakiejś dobrej duszy, która pomoże w zoptymalizowaniu konfiguracji serwera albo dobrego specjalisty, który pomoże profesjonalnie - odpłatnie.

 

Ustawienia mysql:

 

[mysqld]
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
max_connections=70
max_user_connections=30
read_buffer_size = 8M
read_rnd_buffer_size = 8M
sort_buffer = 16M
join_buffer_size = 2M
key_buffer = 256M
query_cache_size = 32M
max_heap_table_size = 256M
tmp_table_size = 256M
max_allowed_packet = 128M
table_cache = 1024
### Global variables ###
thread_stack = 512K
thread_cache_size = 384
wait_timeout = 80
myisam_sort_buffer_size = 64M
binlog_cache_size = 65536
max_join_size = 8M
thread_concurrency = 4
query_cache_limit = 3M
query_cache_type = 1
query_cache_min_res_unit = 1024
#low_priority_updates = 1
long_query_time = 1
log_error = error.dat
log-slow-queries = slow.dat
log-queries-not-using-indexes
skip-innodb
skip-name-resolve
skip-bdb

 

nginx

 

worker_processes  2;
#worker_rlimit_nofile 3000;
user apache;
events{
worker_connections  1024;
}
http{
include mime.types;
default_type application/octet-stream;
server_tokens off;
access_log off;

open_file_cache max=2000 inactive=1m;
open_file_cache_valid 1m;
open_file_cache_min_uses 3;
open_file_cache_errors on;

fastcgi_buffer_size 4k;
fastcgi_buffers 256 4k;
fastcgi_max_temp_file_size 0;

#proxy_buffers 256 4k;
#proxy_max_temp_file_size 0;
gzip on;
gzip_min_length 2000;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

include /usr/local/nginx/conf/vhosts/*;
}

 

php fpm

 

emergency_restart_threshold 10
emergency_restart_interval 1m
process_control_timeout 5s
daemonize yes
max_children 25
StartServers 10
MinSpareServers 5
MaxSpareServers 20
request_terminate_timeout 15s
request_slowlog_timeout 5s
rlimit_files 0
rlimit_core 0
max_requests 600

 

memcached ustawiony na 128mb, zużycie na poziomie 3%

 

zrzut z iostat:

 

Linux 2.6.18-194.8.1.el5.028stab070.5PAE (vps)  03/31/12  _i686_
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
	   3.63	0.00	1.60   18.47	0.00   76.30

 

Load utrzymuje się na poziomie ok 1. Na liście procesów nie widać jakiegoś specjalnie dużego obciążenia, ale iowait skacze i to wysoko.

 

 

Status mysqla zwraca mi:

[/left]


[left]Created_tmp_tables 351
Created_tmp_disk_tables 64
Open_tables 387
Opened_tables 393

 

Podejrzewam, że wina leży właśnie po stronie mysqla - tworzone są tabele na dysku. Tylko jak sobie z tym poradzić? Wydaje mi się że

max_heap_table_size = 256M
tmp_table_size = 256M
table_cache = 1024

 

są wystarczające.... Jak uważacie?

 

 

Może dałoby radę też zoptymalizować ustawienia nginx/php fcgi dla większej wydajności?

 

Pozdrawiam

andycole

 

czesc tabel mysql i tak musi zapisac na dysku, a nie na stosie,

 

mozesz sprobowac dodac tmpdir=/dev/shm

 

tylko na openvz wielkosc tmpfsa jest limitowana przez parametr shmpages, jesli bedzie zbyt mala napisz do swojego dostawcy

 

--

Lazy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

tak, właśnie openvz mam,

 

shmpages (held 20260, maxheld 36644, barrier 262144, limit 262144), info z pliku /proc/user_beancounters

 

 

wartość jest zbyt mała czy mogą być problemy?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

tak, właśnie openvz mam,

 

shmpages (held 20260, maxheld 36644, barrier 262144, limit 262144), info z pliku /proc/user_beancounters

 

 

wartość jest zbyt mała czy mogą być problemy?

 

bariera jest ustawiona na 1GB wiec powinno wystarczyc, jesli i/o to w wiekszosci zapisy i sa generowane przez tabele tymczasowe to przelaczenie tmpdir na /dev/shm moze znacznie poprawic wydajnosc

 

wiec mysle ze warto sprobowac

--

Lazy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×