| В настоящее время стало популярно вместо обычного хостинга, брать себе виртуальный сервер (VPS). Дешево, по сравнению с настоящим сервером ( в 2-3 раза) и места много. Так мои друзья и поступили, заказав себе VPS и отказались от обычного хостинга. Их ресурс был достаточно популярен, но к сожалению часто был не доступен. Взяв VPS - они думали, что решили проблемы с надежностью - но не тут то было. Так как у меня уже был опыт оптимизации таких серверов, они попросили меня посмотреть в чем причина тормозов. Параметры VPS были такие 500 мГц CPU и 386M памяти, система Debian Etch 4. Веб сервер стоял на apache1.3, в качестве базы данных использовалась mysql5.0. Работал VPS на базе Virtuozzo. По следам оптимизации - была написана эта статья. Статья расчитана на опытных вебмастеров. Предварительная настройка Шаг 1. Установка nginx Пришлось похоронить apache и заменить его на nginx. Причины как обычно, Нужные пакеты: nginx Шаг 2. Перевод php в режим fastcgi Нужные пакеты: php-cgi, lighttpd. Подробно тоже останавливатся не буду. Шаг 3. Установка mysql последней версии Ставим mysql5.1 одной из последних версий. Для debian он берется из backports. Шаг 4. Настраиваем все и заставляем работать. Я специально не стал Запуск На наш ресурс стали захаживать посетители и nginx встречал их любимой Проблема 1. Ограниченное количество tcp сокетов Набрав команду: cat /proc/user_beancounters мы видим uid resource held maxheld barrier limit failcnt что напротив параметра numtcpsock постоянно увеличивающуюся циферку в Решение: на 1 соединение nginx приходится 1 tcp сокет? Как бы нитак, Для этого для php в скрипте изменяем: FCGIPORT="8888" на FCGIPORT="/var/run/spawn/fastcgi_socket" далее if test x$UID = x0; then на if test x$UID = x0; then Для mysql соединяемся из mysql_connect не с "localhost", a ":/var/run/mysqld/mysqld.sock". Количество сокетов уменьшилось в системе - но его можно еще уменьшить - keepalive_timeout 0; Он означает, что отдав вебсервер отдав контент - закроет соединение, а Ура ресурсу полегчало, но не радовала маленькая скорость загрузки Проблема 2: Маленькая скорость mysql. Я не большой спец тюнингу по mysql, решил воспользоваться max_connections = 15; // количество одновременных соединений - на VPS Проблема 3. Уменьшение занимаемой памяти. Установка eAccelerator для php. Данный модуль компит php в байт код Ищем следующие строки: Memory Size 33,554,396 Bytes Если Memory Available будет близко к нулю - для этого мы должны ее echo 134217728 >/proc/sys/kernel/shmall #выделяем 128M в /etc/sysctl.conf добавляем: и перезагружаем nginx в VPS. В результате этой не большой настройки трекер обслуживая порядка 50 PS: дальнейшая оптимизация упирается только в CPU и требует более | |
Категория: Интересные статьи |
Просмотров: 216 | Рейтинг: 0.0/0 | |
| Всего комментариев: 0 | |

