Вопрос

У меня есть веб-сервис, работающий на 3 серверах. Уверенность в том виде, как следует --server 1, получает запросы пользователя, хранящие его на локальной БД и работают над ней. -Server 2 и 3 идентичны и основные рабочие лошади, они основанные на запросе выбирают информацию из Интернета и возврат ее. -Сервер 1 звонков сервера 2/3 через HTTP-запрос через локальную локальную локальную систему. (Есть сценарий PHP на сервере 2 & 3, поэтому сервер 1 вызывает его как http: //localip/script.php.) -Server 1 альтернативно называет сервер 2 или 3 (это делается для распределения нагрузки), каждый запрос на сервере 2/3 занимает примерно 8 секунд для обработки. Теперь, когда я установил инструмент мониторинга на всех серверах, он обнаружил, что сервер1 имеет слишком много нагрузки (он показал номер процесса> Критический предел) Это не способ балансировки нагрузки? Как я могу уменьшить нагрузку в Server1?

Это было полезно?

Решение

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

Если сервер 2 и 3 выполняет только запросы в Интернет, то они, вероятно, не делают слишком много рабочих процессоров / диска.

Если у вас есть 2 сервера, настроенные для выполнения достаточно простых задач, и ваш основной сервер, облицовочный пользователем, его можно будет лучше просто запустить все 3 сервера в качестве облицовки пользователем.

Из того, что вы описали, звучит как сервер № 1, блокируется на отклике с серверов 2 и 3, что означает, что он должен иметь возможность открывать множество подключений потенциально. Если серверы 2 и 3 не на самом деле не так много работают, потому что их задача - это просто интернет-запросы, вы, вероятно, лучше обслуживаете слияние пользовательских серверов и двигателя запроса на один сервер и распространяющую загрузку пользователей на всех 3 серверах Отказ

Таким образом, каждый сервер имеет меньше открытых пользовательских соединений. И двигатель запроса до сих пор не загружает ресурсы (если это просто веб-запросы), поэтому он не отрицательно влияет на производительность пользователя.

Просто несколько мыслей для вас. Невозможно быть полностью окончательно, не зная больше о вашем приложении.

Дополнительные комментарии

Как уже упоминалось в комментариях, вы должны изучить правильный балансировщик нагрузки, хорошая аппаратная нагрузка - это первая рекомендация. Где вы управляете своими серверами? Если они находятся в облачном центре столярных данных, таких как Amazon EC2, Rackspace и т. Д., Тогда услуги балансировки нагрузки легко доступны для вас.

Вы также можете использовать балансировщик нагрузки программного обеспечения. Apache предоставляет эту функциональность даже:

http://httpd.apache.org/docs/current/mod/mod_proxy_balancer.html.

Даже с вашей текущей конфигурацией можно было бы поставить Apache перед одним из серверов, а затем настроить его так, чтобы сервер с APACH (делать балансирование нагрузки) получает более низкий процент трафика, компенсировать счет Apache. сервер. В этом случае у вас нет изменений оборудования. Хотя у вас есть очевидная единственная точка провала, не отличающаяся тем, что у вас сейчас, хотя, правильный балансировщик нагрузки, как правило, облегчает проблему с одной точки зрения, которую вы в настоящее время имеете с вашей архитектурой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top