Предположим, я запускаю веб-приложение с помощью Tornado и запускаю его за Nginx в качестве балансировщика нагрузки. Расскажите мне рекомендации для некоторых вещей.
1. Если я запускаю службу в экземпляре AWS EC2, сколько рабочих процессов NGINX следует запускать для данного x количество VCPU для любого конкретного экземпляра. Допустим, я работаю на экземпляре EC2 с 2 VCPU, тогда сколько рабочих процессов мне нужно запустить? Было бы лучше, если бы я знал общее правило для этого. Кроме того, при каких условиях я должен увеличить число рабочих против общего правила?
2. Теперь, когда я установил Nginx в качестве балансировщика нагрузки, все сводится к моему приложению Tornado. Итак, сколько экземпляров Tornado следует запустить при x числе VCPU в экземпляре EC2? Как упоминалось в документе, хорошо иметь 1 экземпляр на процессор, но является ли это наилучшим условием? Если да, то в каком сценарии я должен искать увеличение количество экземпляров на процессор? Если нет, то какое правило лучше?
ПРИМЕЧАНИЕ. Я запускаю экземпляры через Supervisord в качестве программы управления процессами.
3. Теперь, если мое приложение выполняет много асинхронных вызовов к базе данных MySQL и серверу MongooseIM, все они работают на тот же хост, следует ли изменить количество экземпляров Tornado на процессор? Если да, то каково правило? Если нет, то какова наилучшая практика?