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

Обычная масштабируемость веб-CGI на современном оборудовании?

Я участвую в проекте по обновлению системы учета рабочего времени, которая практически не менялась в течение 10 лет. Он запускает Linux / Apache / CGI / MySQL3 на том или ином HP Proliant Pentium, с комбинацией некоторых perl и bash «здесь документов» (с библиотекой C для анализа / очистки входящих запросов) в процессе: по запросу.

Компания выросла с 10 человек в 2001 году до более 750 человек на сегодняшний день и планирует вырасти до нескольких тысяч в ближайшие несколько лет. У приложения есть некоторые проблемы с производительностью, но после исследования выяснилось, что проблемы с производительностью связаны с таблицами с многомиллионными временными записями, в которых явно отсутствуют индексы, а результаты не разбиваются на страницы (вызывая возврат больших страниц).

Использование в Apache и процессы запросов просто не занимают столько времени процессора и памяти; однако декартово соединение в таблицах с миллионами записей действительно потребляет партии и, как сообщается, даже периодически блокируется в конце месяца.

Я хочу решить проблемы с помощью следующих подходов:

  1. Добавьте индексы и немного скорректируйте схему.
  2. Обновите оборудование.
  3. Обновите MySQL до последней версии
  4. Обновите интерфейс, чтобы он стал немного менее старомодным.

Я просто не вижу смысла полностью переписывать программу CGI во внутрипроцессную архитектуру. Я думаю, CGI выдержит прекрасно. Вы действительно могли бы иметь какое-либо беспокойство по поводу архитектуры CGI с отдельными процессами, учитывая успехи, достигнутые нами за последнее десятилетие в области оборудования? Дело в том, что мы можем потратить несколько гигабайт на новый сервер или много 10 гигабайт на повторную запись.

Я действительно не думаю, что это проблема, просто купите новое оборудование.

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

И если повезет (и проведет некоторое тестирование производительности), новое оборудование (после того, как вы сделаете 1 и 3 в своем списке) будет хорошо масштабироваться, и вы можете пропустить много $ 10G переписывают

некоторые мысли:

  • да, модернизируйте оборудование, хотя бы во избежание зависимости от труднодоступных запчастей.
  • правильная индексация БД может легко сократить время в 100 или 1000 раз или даже больше, особенно для таблиц с многомиллионными записями.
  • переход от GCI к какой-либо другой архитектуре позволяет избежать времени запуска процесса, не более того. это большая разница при выполнении сотен или тысяч запросов в секунду, похоже, это не ваш случай.