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

Распределение нагрузки на серверы не только потребляет больше ресурсов

У меня постоянно обновляется веб-сайт в режиме реального времени. Количество ресурсов, необходимых для каждого пользователя, довольно велико, приведу пример.

Настроить

Каждый визит
Это приложение php / mysql, поэтому при каждом посещении загружается статический и динамический контент.
Ресурсы: apache, php, mysql

Каждую секунду (не более секунды будет слишком долго)
Веб-сайт необходимо обновлять в режиме реального времени, поэтому каждую секунду выполняется вызов ajax, который обновляет веб-сайт.
Ресурсы: jQuery, apache, php, mysql

Средние расходы на одного пользователя (потратив одну минуту и ​​посетив 3 страницы)

Оптимизация

Я хочу оптимизировать этот процесс, но думаю, что, может быть, в конце концов все будет так же.

Перед внедрением и тестированием (это займет недели) Я хотел узнать ваше второе мнение, ребята.

Каждый визит
Я хочу начать с nginx спереди и работать как прокси для доставки статического контента.
Источники:

Это сильно снизит нагрузку на apache.

Каждую секунду
Для скрипта, который загружается каждую секунду, я хочу настроить javascript на стороне сервера Node.js с nginx впереди.
Я хочу настроить, чтобы jquery отправлял запрос один раз в минуту, а node.js передавал данные клиенту каждую секунду. Источники: jQuery, nginx, node.js, mysql

Средние расходы на одного пользователя (потратив одну минуту и ​​посетив 3 страницы)

Вопросы

Как вы можете видеть при оптимизации, нагрузка с Apache и PHP снимается и переносится на nginx и node.js. Они известны своей малой занимаемой площадью и хорошей производительностью.

Но у меня есть сомнения, потому что в память еще загружены 2 программы, которые потребляют процессор.

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

Вот несколько советов, которые могут вам помочь.

  1. Проверьте свои URL-адреса с помощью tools.pingdom.com, это даст вам представление о времени загрузки и о том, что занимает больше всего времени.
  2. Взгляните еще раз на http://www.webpagetest.org/ это даст вам примерно ту же информацию, что и PingDom, но также позволит вам определить, где вы можете еще больше повысить производительность.
  3. Переместите весь свой статический контент (изображения, CSS, javascript и т. Д.) В CDN. Это вам очень поможет.
  4. Если вы используете библиотеки ajax, такие как jQuery, Scriptaculous и т. Д., Я рекомендую передать их в Google с помощью http://code.google.com/apis/ajaxlibs/ Это тоже мне очень помогло.
  5. Если вы еще этого не сделали, я бы рекомендовал изолировать MySQL от вашего Webend для повышения производительности на другом устройстве.
  6. Наконец, по моему опыту, для apache2 я использую рабочий модуль, поэтому он больше основан на памяти, а не на процессоре, поэтому мне это немного помогло.

Обратите внимание, что несколько копий одного и того же исполняемого файла или общей библиотеки имеют общие сегменты кода. Это означает, что даже если вы выполняете 50 запусков php, исполняемый файл php был прочитан с диска только один раз и только один раз появится в памяти. Каждое выполнение имеет свой собственный сегмент данных, но это должно происходить независимо от того, как вы распределяете данные по нескольким программам.

Так что ответ, как и на многие вопросы по оптимизации, - «это зависит от обстоятельств». Самый простой способ узнать вашу специфику - это запустить несколько тестов производительности с конфигурациями, которые вы рассматриваете, при умеренной или высокой нагрузке, и сравнить общую нагрузку на ЦП / память / диск / сеть.