Ищите лучшее решение для настройки сервера для моего веб-приложения - PullRequest
0 голосов
/ 01 мая 2019

У меня есть 3 экземпляра приложения на основе codeigniter на двух отдельных серверах. Сервер 1. Первый экземпляр - приложение, второй - API отдыха, оба используют одну и ту же базу данных. (Я знаю, что нет смысла иметь два экземпляра на одной машине, кроме чистоты, и именно поэтому у меня это так). Сервер 2. Этот сервер содержит только API остальных с целым набором функций обработки данных php. Я называю этого работника сервера, потому что это то, что он только делает. Этот сервер работает как конечная точка для многих служб API, с которыми я соединяюсь. Таким образом, все, что делает этот сервер в качестве первой функции - получает запросы от приложения, иногда он обрабатывает эти запросы раньше всего. Затем отправляет запросы в службу API. Процесс завершен, этот сеанс окончен. Вскоре служба API отвечает результатами, когда этот сервер принимает и обрабатывает данные, а затем отправляет результат в приложение.

Приложение порой сильно загружено большим количеством очень простых SQL-запросов, по большей части вставка / обновление для одной таблицы. Количество отправленных запросов также сведено к минимуму, просто потому, что по большей части я отправляю данные как можно больше запросов в одном. Я называю этот массовый запрос.

То, что очень тяжело, так это количество ответов, которые я получаю, я могу получить до 1000 ответов на один запрос в течение нескольких секунд (я не могу минимизировать это, потому что мне нужен каждый), а затем каждый ответ, который я за get также следуют еще два идентичных ответа, просто чтобы удостовериться, что я его получил, и которые я пригрозил как дубликат, как только смогу, и остановил этот процесс. Затем я обрабатываю каждый ответ с помощью php (не слишком тяжелый, просто сопоставляя массивы результатов) и отправляю его в мой оставшийся API на сервере приложений для обновления таблиц приложений.

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

Все работает на (LAMP) Ubuntu 16.04 с mysql и apache. Фреймворк - новейший кодовый указатель.

В настоящее время мои настройки ... ... для сервера приложений 2 виртуальных ЦП 4 ГБ ОЗУ

... для рабочего API сервера 1 виртуальных ЦП 1 ГБ ОЗУ

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

Сначала я программист, затем администратор сервера.

Так что я обсуждал вопрос о переходе на NGINX, думаю, я определенно пойду с php-fpm, может быть, MariaDB, но я читаю об управлении потоками, это важно. Это приложение не будет работать тяжело все время, вероятно, 50/50, поэтому я думаю, что из-за этого я все равно не смогу установить его оптимальным для всех времен, и в итоге может привести к снижению производительности. Тогда, вероятно, придется умножить серверы и настроить балансировку нагрузки, а также высокую доступность. Не уверен во всем этом. Я не думаю, что простое обновление серверов до максимума поможет. Я могу использовать до 64 ГБ ОЗУ и 32 виртуальных ЦП на сервер.

Могу ли я услышать ваше мнение, пожалуйста? Может поделиться опытом? Ссылки на ресурсы, если есть хорошие?

Большое спасибо. Я надеюсь, что вы можете мне помочь.

Спасибо.

1 Ответ

0 голосов
/ 19 мая 2019

Ни один из ваших вопросов не имеет значения.Ну, это преувеличение.Машины сегодня не настолько разные, чтобы беспокоиться о том, чтобы начать с «лучшего» в первый день.Вместо этого реализуйте что-то , поработайте с ним некоторое время, а затем посмотрите, где ваши узкие места, чтобы решить, что делать дальше.

Возможно, у вас не будет никаких узких мест в течение длительного времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...