Назад | Перейти на главную страницу

Сколько пользователей «много пользователей»?

Мне нужно найти решение для веб-сайта, который испытывает трудности под нагрузкой. Сайт получает ~ 500 одновременных подключений в часы пик и насчитывает около 42 тыс. Посещений в день.

Это сайт на основе Wordpress, соединенный с форумом vbulletin с большим количеством контента и довольно сложной структурой, которая интенсивно использует базу данных. Я уже реализовал полное кэширование страницы на уровне кода (без этого сервер просто выйдет из строя) и настроил все другие директивы кеширования, а также объединение файлов css и т.п., чтобы максимально ограничить HTTP-запросы.

Мне нужно понять, есть ли что-то еще, что можно сделать с помощью программного обеспечения, или если нагрузка слишком велика для сервера, и его необходимо обновить, потому что сервер иногда выходит из строя в часы пик.

Сейчас нет доступа к серверу, но это выделенная машина CentOS (я думаю, 4 ГБ оперативной памяти, не могу сказать, какой процессор), на которой запущен apache / mysql.

Итак, вернемся к основному вопросу: как я могу узнать, что пользователей слишком много?

РЕДАКТИРОВАТЬ

Получил доступ к журналам, согласно error.log во время вчерашнего отключения произошел сбой apache:

[Mon Apr 19 18:26:51 2010] [notice] child pid 4825 exit signal Segmentation fault (11)
[Mon Apr 19 18:26:53 2010] [notice] child pid 4794 exit signal Segmentation fault (11)
[Mon Apr 19 18:27:08 2010] [notice] child pid 4595 exit signal Segmentation fault (11)
[Mon Apr 19 18:27:11 2010] [notice] child pid 4826 exit signal Segmentation fault (11)
.....

Как я могу определить причину этого segfault?

Слишком много, когда не удается найти что-то для оптимизации. Попытайтесь увидеть, привязаны ли вы к процессору или вводу-выводу при высокой нагрузке - это определяет, где искать дальше. Если MySql замедляет вас, вы можете кое-что получить, внимательно изучив базу данных - например, create указывает или реорганизует, как и где хранятся данные. Однако в идеале содержимое базы данных обслуживается из памяти.

Когда вы ограничены процессором, определите, какой процесс исчерпывает себя. Если это Apache / PHP, определите, какая часть вашего приложения создает наибольшую нагрузку. Это может быть доска объявлений, блог и т. Д.

Вы также можете найти такие вещи, как открытые соединения, пропускная способность сети и т. Д. Также посмотрите, получаете ли вы что-то, обслуживая статический контент с другой позиции или другим способом.

У меня есть форум на базе Vbulletin 4.0 со 100 тыс. Посещений в день на машине CentOS. Это 2xIntel (R) Xeon (R) CPU E5205 @ 1.86GHz, 8Gb RAM. Нагрузка на сервер при подключении 1 тыс. Пользователей составляет около 2,0–3,0. Я не особо заботился о его оптимизации.

Но сначала вам нужно попробовать ОТКЛЮЧИТЬ все плагины vbulletin и wordpress. Вы можете сделать это через панель управления администратора как в WP, так и в VB. И после этого посмотрите, нормально ли будет работать сервер. Если это так, я полагаю, что один или несколько ваших плагинов написаны плохо. Скорее всего, содержат неоптимизированные запросы.

Если у вас VBulletin 4.x с большим количеством пользователей и одновременным доступом к базе данных - рассмотрите переход на InnoDb. Это улучшит параллелизм. Установите memcache и подключите его к VB. Это облегчит БД.

Попробуйте установить WP SuperCache, чтобы статические страницы служили статическими файлами. Также подумайте о переходе с Apache на nginx, lighttpd или что-то более легкое.

Это полностью зависит от программного обеспечения и конфигурации системы. Долгое время stackoverflow.com многократно обслуживал эти номера просмотров / подключений с одного сервера. Я считаю, что вся трилогия все еще работает только на 2-3 серверах.

Если вы можете настроить приложение, вы сможете оптимизировать его. Возможно, вам потребуется оптимизировать конфигурацию сервера базы данных. Если вы не можете сделать ни то, ни другое, возможно, будет проще решить проблему с помощью оборудования. Однако дополнительное оборудование не поможет, если ваше приложение не предназначено для масштабирования на несколько серверов.