Ключевые слова:freebsd, mysql, tune, optimization, kernel, load_average, trouble, (найти похожие документы)
Date: Sun, 05 Jan 2003 18:17:51 +0500
From: Oleg Koreshkov <[email protected]>
Newsgroups: ftn.ru.unix.bsd
Subject: Оптимизация FreeBSD и MySQL для работы в пиковых нагрузках
> Господа, подскажите, какими параметрами надо оперировать, чтобы FreeBSD
> полегчало при высоких загрузках.
>
> Hаблюдаю проблему - на сервере вертится apache+perl+mysql.
> К серверу в пиковые часы приходится очень много запросов, по
> большей части на перловые скрипты, которые и создают
> большую загрузку. Перловые скрипты обращаются к mysql через DBI.
> Иногда получается, что выдается:
>
> Mysql->connect() failed: Can't connect to local MySQL server through socket
> Mysql->'/tmp/mysql.sock' (61) at w.cgi line 60
>
> Видимо из-за таймаута на установку соединения. Запросы в эти моменты тормозят
> просто жутко - select * from table; из 2-х строк выдает ответ при загрузке
> около 30-40 через 3-6 секунд.
меры (не по порядку эффективности)
Ядро/система:
1. включить softupdates на партициях где живет mysql/apache (если не включены)
2. включить syncookies
3. увеличить kern.ipc.somaxconn
4. увеличить kern.ipc.nmbclusters
5. увеличить net.inet.tcp.sendspace, net.inet.tcp.recvspace
6. увеличить maxusers
7. Попробовать (?) поэксперментировать со всякими net.inet.tcp.keep* и
net.inet.tcp.*ack*
MySQL:
1. увеличить back_log, увеличить connect_timeout, увеличить max_connections
2. попробовать поизменять всякие разные *buffer_size* и *cache_size*
3. попробовать задать --delay-* параметры
5. попробовать собрать мускуль с linux-threads
Апач:
1. Уменьшить(убрать?) KeepAliveTimeout в конфиге апача.
2. сделать перловые скрипты в виде mod_perl
3. делать попытки коннекта в скриптах с увеличивающимся таймаутом в цикле...
Общие (и наверное самые лучшие рекомендации):
1. Поставить кеширующий/акселерирующий прокси (apache/mod_accel,
apache/mod_proxy, squid, etc... ) перед сервером с perl/mysql.
2. Вкомпилить в ядро accf_http (читать man accf_http(9), на сайте апача и в
гугле) и сказать апачу его использовать.