V@der, понятно. Ситуация у вас предельно проста. Объясню.
Значение MaxClients по сути определяет сколько процессов апача может параллельно работать. Вы выставили 150. Много это или мало?
Давайте посчитаем. У вас 512 Мб ОЗУ. При средней криворукости настройки и скриптов один процесс апача может кушать 32-64 Мб ОЗУ (смотреть нужно по колонке RES вывода top). Это значит, что в вашей ОЗУ может одновременно работать от 8 до 16 таких процессов. Это без учета всяких там MySQL и прочих FTP. Если выставить больше процессов, то рано или позно они забьют всю оперативную память и сервер свалится в своп, что, собственно, и происходит.
У вас скорей-всего апач скомпилирован с модулем prefork. Следовательно, настраивать нужно соответствующий раздел. Вот такие примерно должны быть настройки:
netwind, и так. Давайте еще раз. В чем у вас проблема?
Если сервер под DDoS, то запрашиваются обычно целые страницы. Здесь nginx работает как самый обычный прокси. Если он правильно настроен, то проблем с ним быть не должно. Все запросы страниц адресуются апачу. Статику обычно при DDoS не запрашивают.
Апач. Тут ситуация повеселей. Если хотите уменьшить нагрузку и его потребление памяти, то придется его настроить. Первым делом отключите все неиспользуемые модули (a2dismod ...). Это позволит понизить потребление памяти отдельным процессом. Также настройте таймауты и MaxClients. Правильная настройка MaxClients, к слову, позволит избежать падения сервера в своп и других негативных явлений.
Еще одним аспектом является оптимизация MySQL. В первую очередь нужно настроить объемы кешей (кеш индексов, кеш запросов и объем памяти под временные таблицы). Это позволит сильно снизить нагрузку на дисковую подсистему и повысить скорость работы. Также можно отключить innodb (если не пользуетесь).
Как-то так. По каждому пункту могу расписать что да как.
В настройках все в общем-то хорошо, если бы не MaxClients. Там стоит значение 150. Это очень много. Давайте посчитаем насколько.
На средней загаженности сервере один процесс апача может занимать до 25-50 Мб. У вас всего 2 Гб памяти. Это примерно 40-80 процессов Апача. Если их будет создаваться больше - система уйдет в своп. У вас так это и происходит.
Попробуйте уменьшить MaxClients до 50 хотя бы. Более точное значение можно подобрать так:
Вводим top, смотрим сколько занимают в среднем процессы Apache (столбик RES) и рассчитываем сколько таких процессов поместится в ОЗУ с учетом, что там еще MySQL работает и другие процессы.
Еще одним шагом является отключение ненужных модулей Apache
а по-моему тема неактуальна
Тема действительно не актуальна. Я уже молчу о том, что она не в том разделе. По коду на предыдущей страничке отписались.
Можете подсказать, что именно нужно сделать, чтобы подключить эти платёжные системы?
Понятия не имею. Вы бы потрудились описать для начала что за CMS (diafan?) и какие такие "украинские платежные системы" подключаем.
Если говорить в общем, то вам нужно искать программиста.
Все тоже самое:
[Wed Jun 15 04:16:40 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting
Здесь вам Апач советует увеличить значение MaxClients так как не хватакт процессов для обработки запросов.
MaxClients = (MemFree + Inactive) / 65 мб = 18
2030/65 = 31. Это максимальное значение. На практике можете выставить 24-28.
Не забывайте также поотключать ненужные модули.
Еще уменьшать?
Можно попробовать. А от чего сервер упал? Нехватка памяти?
V@der, понятно. Ситуация у вас предельно проста. Объясню.
Значение MaxClients по сути определяет сколько процессов апача может параллельно работать. Вы выставили 150. Много это или мало?
Давайте посчитаем. У вас 512 Мб ОЗУ. При средней криворукости настройки и скриптов один процесс апача может кушать 32-64 Мб ОЗУ (смотреть нужно по колонке RES вывода top). Это значит, что в вашей ОЗУ может одновременно работать от 8 до 16 таких процессов. Это без учета всяких там MySQL и прочих FTP. Если выставить больше процессов, то рано или позно они забьют всю оперативную память и сервер свалится в своп, что, собственно, и происходит.
У вас скорей-всего апач скомпилирован с модулем prefork. Следовательно, настраивать нужно соответствующий раздел. Вот такие примерно должны быть настройки:
<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 4
MaxSpareServers 8
MaxClients 12
MaxRequestsPerChild 128
</IfModule>
V@der, а можете выложить вывод top? Скорей-всего всю память сжирает Apache из-за неправильной настройки параметра MaxClients
netwind, и так. Давайте еще раз. В чем у вас проблема?
Если сервер под DDoS, то запрашиваются обычно целые страницы. Здесь nginx работает как самый обычный прокси. Если он правильно настроен, то проблем с ним быть не должно. Все запросы страниц адресуются апачу. Статику обычно при DDoS не запрашивают.
Апач. Тут ситуация повеселей. Если хотите уменьшить нагрузку и его потребление памяти, то придется его настроить. Первым делом отключите все неиспользуемые модули (a2dismod ...). Это позволит понизить потребление памяти отдельным процессом. Также настройте таймауты и MaxClients. Правильная настройка MaxClients, к слову, позволит избежать падения сервера в своп и других негативных явлений.
Еще одним аспектом является оптимизация MySQL. В первую очередь нужно настроить объемы кешей (кеш индексов, кеш запросов и объем памяти под временные таблицы). Это позволит сильно снизить нагрузку на дисковую подсистему и повысить скорость работы. Также можно отключить innodb (если не пользуетесь).
Как-то так. По каждому пункту могу расписать что да как.
И так. Apache у вас работает с MPM Prefork
Server MPM: Prefork
значит все изменения нужно вносить сюда:
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 500
</IfModule>
В настройках все в общем-то хорошо, если бы не MaxClients. Там стоит значение 150. Это очень много. Давайте посчитаем насколько.
На средней загаженности сервере один процесс апача может занимать до 25-50 Мб. У вас всего 2 Гб памяти. Это примерно 40-80 процессов Апача. Если их будет создаваться больше - система уйдет в своп. У вас так это и происходит.
Попробуйте уменьшить MaxClients до 50 хотя бы. Более точное значение можно подобрать так:
Вводим top, смотрим сколько занимают в среднем процессы Apache (столбик RES) и рассчитываем сколько таких процессов поместится в ОЗУ с учетом, что там еще MySQL работает и другие процессы.
Еще одним шагом является отключение ненужных модулей Apache
у меня vps 3ггц, 2 гига озу, онлайн на сайте от 150-200 человек, средняя посещалка в день 13к уников.
Немного. У меня Joomla 1.5 с такой посещалкой на жалкой VPS-ке с 200Мб ОЗУ работает. Большую часть времени из тех 200 свободно 60-70 Мб.
В вашем случае прежде всего нужно установить и настроить nginx. Также нужно настроить апач, чтобы не валил сервер. Потом можно заняться тюнингом mysql
Проблема скорей-всего во внутренних дублях и в очень похожем контенте страниц.