У меня есть веб-сервис, работающий на 3 серверах. Woreking выглядит следующим образом: -Server 1 получает запросы пользователя, хранящие его на локальном db, и выполняет некоторую работу над ним. -Сервер 2 и 3 идентичны и основные рабочие лошади, они по запросу запрашивают информацию из Интернета и возвращают ее. -Server 1 вызывает сервер 2/3 через HTTP-запрос через lan. (На сервере есть php-скрипт 2 & 3, поэтому сервер 1 называет его http://localip/script.php) -Server 1 alternatevely вызывает сервер 2 или 3 (это делается для распространения load) Каждый запрос на сервере 2/3 занимает приблизительно 8 секунд для обработки. Теперь, когда я установил средство мониторинга на всех серверах, он обнаружил, что сервер1 имеет слишком большую нагрузку (он показал число процессов> критический предел) Разве это не способ сбалансировать нагрузку? Как уменьшить нагрузку на Server1?балансировка нагрузки по серверам
ответ
Сервер 1 отвечает на входящие запросы от ваших пользователей. Поэтому, если вы определили, что это узкое место, вам нужно сосредоточить свое внимание там.
Если сервер 2 и 3 выполняют запросы только в Интернете, они, вероятно, не слишком много обрабатывают процессор/диск.
Если у вас есть 2 сервера, настроенных на выполнение достаточно простой задачи, и ваш основной сервер, ориентированный на пользователя, перегружается, лучше просто запустить все 3 сервера с обращением к пользователю.
Из того, что вы описали, это похоже на то, что сервер № 1 блокирует ответ от серверов 2 & 3, что означает, что он должен удерживать многие потенциальные соединения. Если серверы 2 & 3 на самом деле не так много работают, потому что их задача - это просто интернет-запросы, которые, вероятно, лучше обслуживать путем слияния серверов, ориентированных на пользователя, и механизма запросов на один сервер и распределения нагрузки пользователя на все 3 сервера ,
Таким образом, каждый сервер имеет меньше открытых подключений пользователей. И механизм запросов по-прежнему не является ресурсом hogging (если это всего лишь веб-запросы), поэтому он не оказывает негативного влияния на производительность пользователя.
Только некоторые мысли для вас. Невозможно быть полностью окончательным, не зная больше о вашем приложении.
Дополнительных комментарии
Как уже упоминался в комментариях, вы должны смотреть в правильную балансировку нагрузки, хорошая балансировка нагрузки оборудования является первой рекомендацией. Где вы работаете на своих серверах? Если они находятся в облачном центре обработки данных, таком как Amazon EC2, Rackspace и т. Д., То услуги балансировки нагрузки легко доступны для вас.
Вы также можете использовать балансировщик программного обеспечения. Apache предоставляет эту функциональность даже:
http://httpd.apache.org/docs/current/mod/mod_proxy_balancer.html
Даже при текущей конфигурации можно было бы поставить Apache перед одним из серверов, а затем настроить его так, чтобы сервер с Apache (делать балансировку нагрузки) получает меньший процент трафика, чтобы компенсировать расходы сервера Apache. В этом случае у вас нет аппаратного изменения. Хотя у вас есть очевидная единственная точка отказа, но не такая, какая у вас есть сейчас, правильный балансировщик нагрузки, как правило, облегчает проблему с одной точкой отказа, которую вы в настоящее время имеете с вашей архитектурой.
- 1. Балансировка нагрузки с nginx
- 2. SignalR и балансировка нагрузки
- 3. Magento - балансировка нагрузки AWS
- 4. Балансировка сетевой нагрузки GCE
- 5. Балансировка нагрузки, чисто переадресация
- 6. Балансировка нагрузки MySQL ndbcluster
- 7. Балансировка нагрузки по HAProxy на кластере Coreos
- 8. Балансировка нагрузки AWS
- 9. Redis кластер/балансировка нагрузки
- 10. yii2 и балансировка нагрузки
- 11. Tomcat 7 Балансировка нагрузки
- 12. простая балансировка нагрузки alghorithm
- 13. Балансировка нагрузки на Drupal
- 14. apache (httpd) балансировка нагрузки
- 15. сортировка и балансировка нагрузки
- 16. Когерентность и балансировка нагрузки
- 17. Балансировка нагрузки ASP.Net
- 18. Балансировка нагрузки Pentaho Carte
- 19. Балансировка нагрузки Клиент MQTT
- 20. Балансировка нагрузки на серверах
- 21. Балансировка нагрузки в Hadoop
- 22. Mod_Jk Балансировка нагрузки
- 23. балансировка нагрузки wso2 IS
- 24. Балансировка сетевой нагрузки IIS
- 25. балансировка нагрузки в php
- 26. Балансировка нагрузки Nginx
- 27. SSL и балансировка нагрузки
- 28. Балансировка нагрузки ADAM
- 29. JMeter - балансировка нагрузки
- 30. OrientDB 2.2.4 Балансировка нагрузки
серверы 2 и 3 извлекают информацию из Интернета и возвращают ее серверу 1, что означает сервер 2 и 3 блокирующий сервер 1, а не другой путь – ajreal
@ajreal это мобильная служба на самом деле и когда пользователь отправляет смс на номер он попадает на наш ip ie Server 1. Я не могу установить каждый sms, чтобы набрать другой ip. Поэтому мне нужно как-то разделить нагрузку с сервера1 –
@Ashwin - наверняка у вас может быть много оборудования для балансировки нагрузки, доступного на рынке, вам просто нужно настроить виртуальный IP-адрес на публичный IP-адрес, и когда ваше оборудование балансировки нагрузки получит запрос, он может следовать запросу на сервер 1 до N – ajreal