В настоящее время я использую mediatemple DV server (базовый) с выделенной оперативной памятью 512 МБ, это VPS на базе CentOS с Plesk и Virtuozzo. Мой опыт работы с ним с первого дня был плохим, и я мог решить проблемы с моим сервером только с помощью нескольких кэширующих "пластырей", но мои сайты не такие маленькие, как год назад, поэтому проблемы усугубились.
У меня есть 3 установки Drupal, запущенные на отдельных (plesk) доменах, 1 из этих установок drupal - это мультисайт, состоящий из 5-6 сайтов, 2 из которых приносят реальный трафик. Те кэширующие «пластыри», о которых я упоминал, - это APC, который, казалось, очень помог изначально, и Drupal Boost, который считается лаком для бедных, он делает все мои страницы статичными для анонимных пользователей. Совокупная оценка за последние 30 дней в Google Ananlytics: 90 тыс. Посетителей 260 тыс. Просмотров страниц.
Проблема: много простоев, я постоянно проверяю, работают ли мои сайты, и в последнее время я обнаружил, что они не работают более 3 раз в день. Перезапуск Apache вернет его на некоторое время. Я ищу в Google каждое сообщение об ошибке и искал способы оптимизировать мой DV-сервер, и я не понимаю, каков мой следующий шаг. Является ли этот сервер плохим, я столкнулся с недопустимо низким ограничением, таким как барьер памяти ядра 12 МБ (kmemsize), это на моей стороне, мне нужно еще немного оптимизировать?
* Я предоставил как можно больше информации ниже, мы будем благодарны за любую предоставленную помощь или предложения
Общие сообщения об ошибках, которые я вижу в журнале:
[error] (12)Cannot allocate memory: fork: Unable to fork new process
[error] make_obcallback: could not import mod_python.apache.\n
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 21, in ?
import traceback
File "/usr/lib/python2.4/traceback.py", line 3, in ?
import linecache
ImportError: No module named linecache
[error] python_handler: no interpreter callback found.
[warn-phpd] mmap cache can't open /var/www/vhosts/***/httpdocs/*** - Too many open files in system (pid ***)
[alert] Child 8125 returned a Fatal error... Apache is exiting!
[emerg] (43)Identifier removed: couldn't grab the accept mutex
[emerg] (22)Invalid argument: couldn't release the accept mutex
cat / proc / user_beancounters:
Version: 2.5
uid resource held maxheld barrier limit failcnt
41548: kmemsize 4582652 5306699 12288832 13517715 21105036
lockedpages 0 0 600 600 0
privvmpages 38151 42676 229036 249036 0
shmpages 16274 16274 17237 17237 2
dummy 0 0 0 0 0
numproc 43 46 300 300 0
physpages 27260 29528 0 2147483647 0
vmguarpages 0 0 131072 2147483647 0
oomguarpages 27270 29538 131072 2147483647 0
numtcpsock 21 29 300 300 0
numflock 8 8 480 528 0
numpty 1 1 30 30 0
numsiginfo 0 1 1024 1024 0
tcpsndbuf 648440 675272 2867477 4096277 1711499
tcprcvbuf 301620 359716 2867477 4096277 0
othersockbuf 4472 4472 1433738 2662538 0
dgramrcvbuf 0 0 1433738 1433738 0
numothersock 12 12 300 300 0
dcachesize 0 0 2684271 2764800 0
numfile 3447 3496 6300 6300 3872
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 14 14 200 200 0
TOP: (В январе средняя нагрузка была действительно высокой 3-10, мне удалось снизить ее до уровня, который есть сейчас, предоставив APC больше памяти для игры)
top - 16:46:07 up 2:13, 1 user, load average: 0.34, 0.20, 0.20
Tasks: 40 total, 2 running, 37 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.3% us, 0.1% sy, 0.0% ni, 99.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 916144k total, 156668k used, 759476k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
MySQLTuner: (после оптимизации каждой таблицы и восстановления любой таблицы с избытком я получил фрагментированный отсчет до 86)
[--] Data in MyISAM tables: 285M (Tables: 1105)
[!!] Total fragmented tables: 86
[--] Up for: 2h 44m 38s (409K q [41.421 qps], 6K conn, TX: 1B, RX: 174M)
[--] Reads / Writes: 79% / 21%
[--] Total buffers: 58.0M global + 2.7M per thread (100 max threads)
[!!] Query cache prunes per day: 675307
[!!] Temporary tables created on disk: 35% (7K on disk / 20K total)
Вам не хватает памяти (ОЗУ).
Обновление до 1 или 2 ГБ должно дать массивный повышение производительности.
Похоже, это удвоит или утроит ваши расходы, поэтому вы можете посмотреть на других провайдеров VPS.
Обновление, скорее всего, решит ваши проблемы, но может и не понадобиться. Если вам удобно устанавливать что-то в Linux, вы можете:
Эгир действительно хорошо, но не идеально, если вы разрешаете (shell / ftp / php) доступ к различным сайтам другим лицам. Прочтите об этом, прежде чем это сделать. Существует «дистрибутив» от Omega8.cc, который собирает Aegir / Nginx с нуля, но имеет довольно радикальный подход и устанавливает всевозможные другие компоненты. Я бы не советовал, делай своими руками.
Короче говоря, Plesk / Apache2 потребляет много ресурсов по сравнению с Nginx / PHP-FPM / Aegir Throw Varnish-with-Pressflow в сочетании, и у вас будет гораздо меньшее использование памяти вместе с огромным увеличением скорости. Сам лак много ресурсов не ест.
Видя, что вы используете Virtuozo / Plesk, я предполагаю, что вы не можете удалить панель управления. Возможно, все еще было бы целесообразно использовать Varnish и / или Nginx и просто использовать Apache в качестве бэкэнда. Но я не уверен, я не специалист по панели управления, и вполне возможно, что вы даже не можете изменить порты, которые прослушивает ваш веб-сервер.
Вы можете выбрать более самостоятельный VPS (а не на основе Virtuozzo / OpenVZ, если возможно) и попытаться заставить Nginx и др. Работать над этим. Затем перенесите свои сайты через Aegir.
Если вы используете VPS только для сайтов Drupal, возможно, вам лучше запустить Aegir, чем полноценную панель управления, такую как Plesk. Не знаю, сэкономит ли это ресурсы и насколько это возможно, но, возможно, стоит подумать.
Есть довольно много статей о том, как лучше всего оптимизировать Drupal, но они обычно включают в себя довольно много таранов. Эта коллекция хорошее начало. Но сначала убедитесь, что вы не используете ненужные модули.
Вы также можете решить, переносить ли MySQL на отдельный сервер (хотя, вероятно, не для Drupal, поскольку он имеет тенденцию довольно интенсивно использовать базу данных). И если большая часть вашего трафика предназначена для анонимных пользователей, возможно, стоит подумать о том, чтобы получить дополнительный сервер для запуска прокси-сервера кэширования и / или memcached.
Но дополнительная память на этом сервере, вероятно, является самым простым и лучшим решением. 512 МБ - это не так уж и много для объединенного сервера Web / MySQL, на котором работают довольно большие сайты Drupal.