29.09.2010

Выделенный сервер, настройки CentOs/PHP/MySQL

Я не специалист в серверах, но что то делать нужно. Боты стали ложить сервак, а может не только боты(хорошо бы).

Сервер unmanagement  - попробовал все сделать сам.
512mb
php 5.2.6
mysql 5
CentOs 5

Для Mysql нашел скрипт, который помогает  оптимально сконфигурировать my.cnf  “MySQL Performance Tuning Primer Script” – называется, качаете на сервак и запускаете, ничего компилировать не нужно. Пару дней потестил, погуглил и в итоге такие параметры для mysql получились:
за основу взят cnf из установки  “Example MySQL config file for large systems”.

# This is for a large system with memory = 512M where the system runs mainly
#./tuning-primer.sh

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
skip-locking
skip-innodb
skip-bdb

max_allowed_packet = 8M

key_buffer_size        = 32M

sort_buffer_size   = 1M
read_buffer_size   = 1M
join_buffer_size = 8M
read_rnd_buffer_size = 4M

max_join_size = 8M

myisam_sort_buffer_size = 64M

net_buffer_length  = 10K

query_cache_limit = 1M
query_cache_size = 6M

thread_stack       = 64K
thread_cache_size = 8

table_cache        = 512
tmp_table_size = 32M
max_heap_table_size = 64M

#memory limit
max_seeks_for_key=128M

#logs
log_slow_queries
log-queries-not-using-indexes
long_query_time =10

log_bin
max_binlog_cache_size = 64K
max_binlog_size = 8M

expire_logs_days = 7

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

это не оптимальный вариант, но на большее меня не хватило, все равно красные предупреждения показывает.

PHP

Тут особо настраивать нечего, можно поставить memory_limit 32mb или больше, в зависимости от тяжести скриптов

APACHE

Тут можно зажать немного, ограничить максимальное количество  соеденений  и timeout на соеденение. Посмотреть какой модуль apache использует (prefork или нет) так: # httpd -V

MaxKeepAliveRequests 100

KeepAliveTimeout 10

<IfModule prefork.c>
StartServers         2
MinSpareServers      2
MaxSpareServers     5
ServerLimit          20
MaxClients           20
MaxRequestsPerChild  500
</IfModule>

Все равно, когда смотрю – top , бывает свободной памяти 6mb и load average: 10, раньше до 50 доходило

Еще поинтересуюсь, на сервере около 10 сайтов,  проблемы начались после того как поставил wordpress3 + 30к постов и минимум плагинов. Неужели для wp нужен дедик , я удивлен) . Без кеширования вообще тормоз или я настраивать не умею.

Комментариев нет: