Я арендую небольшой виртуальный сервер на 1und1.de. (Ссылка, но только на немецком) (2 ГБ ОЗУ динамически, не менее 512 МБ, жесткий диск 20 ГБ) Я выбираю Ubuntu 8.04 LTS в качестве операционной системы (64-разрядная версия). Я установил apache2 + php5 + mysql через репозитории Ubuntu, а затем eAccelerator.
Я занимаюсь разработкой и производством. Этот сайт представляет собой своего рода каталог и имеет несколько посетителей (250 каждый день) и множество страниц (около 7,5k). Каждые несколько дней серверы зависают. Это означает, что он работает, может быть отправлен пинг, но любое другое действие приведет к «серверу отказано в соединении». Заглянув в админку, вы увидите, kmemsize
слишком высокий, а также было создано множество процессов apache.
Мне кажется, что мой apache потребляет все мои ресурсы (и также кажется, что эти зависания, кажется, начинаются, если Google или другой сканер начинает сканировать страницу).
Затем я попытался избежать этих зависаний:
Вроде бы ситуация улучшилась, но зависания все равно случаются.
Кто-нибудь знает, что можно / нужно изменить?
Выясните, в чем на самом деле проблема:
Не начинайте настройку, пока не воспользуетесь чем-то вроде top или командой ps, чтобы увидеть, что на самом деле использует память. Это может быть где угодно в стеке (Mysql, PHP, Apache). Если это Апач ...
Переключитесь на более легкий HTTP-демон:
Рассматривали ли вы более легкий HTTP-демон, такой как:
Рассмотрим другой MPM с Apache:
Я бы много протестировал это, прежде чем запускать это в производство, но вы можете подумать о переключении рабочего (вместо выполнения) модуля многопроцессорной обработки (MPM). Эта статья говорит, что это использовалось на dealnews.com и помогло с использованием памяти. Я не делал этого с Ubuntu, но думаю, что это просто:
sudo apt-get remove apache2-mpm-prefork
sudo apt-get install apache2-mpm-worker
Но вы можете подумать о создании Apache из исходного кода, чтобы у вас были только те модули, которые вам нужны, хотя это может быть большим проектом. Также из статьи имейте в виду:
Это важная часть. Вы не можете использовать радикальные расширения в PHP, когда используете worker.
Также настройте PHP:
Эта статья IBM Developerworks имеет некоторые параметры настройки php, которые также могут помочь уменьшить объем памяти.
Также настройте MySQL:
В третья статья в приведенной выше статье о настройке лампы IBM говорится о настройке MySQL. Это может привести к тому, что потребуется довольно много памяти.