Прежде всего, я должен сказать, что я не эксперт в администрировании серверов. Я занимаюсь веб-программированием более 10 лет на нескольких платформах, но большую часть времени дошел до готовой ситуации, когда задействованы ИТ-специалисты или хорошая компания, предоставляющая веб-хостинг.
Теперь я, наконец, оказался в ситуации, когда мне потребовалось создать LAMP-установку с нуля (с простой установкой CentOS), чтобы обслуживать довольно интенсивную установку Wordpress.
Все шло гладко, так как я был в блоке с администрированием серверов на базе Linux, чтобы все заработало, но я получаю действительно странные зависания системы несколько раз в неделю, и поскольку я единственный, кто может получить доступ к серверу и загрузите сервисы, это ДЕЙСТВИТЕЛЬНО раздражает.
Вот некоторые ключевые данные:
Сервер
использование
Сделано:
Я сузил проблему до управления памятью - или ее отсутствия. По какой-то причине свопинг отключен на сервере, и как только потребление памяти достигает 100%, сервер просто переходит в режим перегрузки, и вся надежда теряется. Объем памяти (384 МБ) должен быть более чем достаточным для размещения сайта с такой статистикой, поэтому что-то сделано неправильно. У меня заканчиваются идеи, что это могло быть.
Я, очевидно, пытался настроить параметры в my.cnf, php.ini и httpd.conf, но безрезультатно. Вот мои основные настройки на данный момент:
my.cnf
skip-innodb
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-locking
skip-ndbcluster
skip-bdb
skip-networking
safe-show-database
query_cache_limit=8M
query_cache_size=48M
query_cache_type=1
max_user_connections=200
max_connections=32
interactive_timeout=60
wait_timeout=60
connect_timeout=50
thread_cache_size=4
key_buffer= 96M
join_buffer=1M
max_connect_errors=20
max_allowed_packet=32M
table_cache=1024
record_buffer=1M
sort_buffer_size=6M
read_buffer_size=6M
read_rnd_buffer_size=6M
thread_concurrency=4
myisam_sort_buffer_size=32M
server-id=1
user=mysql
tmp_table_size=64M
max_heap_table_size=48M
php.ini
memory_limit = 128M
httpd.conf
StartServers 2
MinSpareServers 3
MaxSpareServers 5
ServerLimit 16
MaxClients 16
MaxRequestsPerChild 1000
Это та часть, где может быть самоочевидно, что я летаю прямо здесь, за штаны. Являются ли эти настройки хотя бы отдаленно приемлемыми для настройки сервера 384 МБ? Что еще можно сделать для уменьшения количества сбоев, когда единственное решение - войти в систему для перезапуска mysqld и httpd?
Я знаю, что все это более или менее обсуждалось миллион раз раньше, и поверьте мне, я просмотрел все темы, которые нашел в Server Fault, попробовал все советы и указатели, но безрезультатно.
Глупо то, что мы перешли от довольно надежной настройки веб-хостинга к более дорогостоящей настройке виртуального сервера, чтобы уменьшить беспокойство по поводу стабильности и масштабирования сервера, но на самом деле это ухудшило ситуацию и, несомненно, на 99% из-за моего собственные недостатки как админ!
Так что, пожалуйста, гуру, помогите мне немного. Я обещаю, что я никогда не буду скучать с ИТ-специалистом и напишу только код, который легко развернуть, не выйдет из строя посреди ночи и в целом будет хорошо помнить вас в другие дни, помимо Дня системного администратора.
Если у вас нет раздела подкачки, вы все равно можете настроить файл подкачки следующим образом
dd if = / dev / zero of = / swapfile1 bs = 1024 count = 524288
mkswap / swapfile1
swapon / swapfile1
echo "/ swapfile1 swap swap defaults 0 0" >> / etc / fstab
Замена веб-сервера по-прежнему будет ухудшать производительность, но не остановится.