аватар question@mail.ru · 01.01.1970 03:00

На чём развернуть высоко нагруженный сайт (python, MySQL)?

Есть работающий сайт, написанный на Python (Django), и БД - MySQL.
Так как разработчики не сильно потрудились над написанием оптимизированного кода, сайт получился очень тяжелым. И при посещаемости в десяток тысяч в день, в пиковое время сервер не справляется с нагрузкой и выкидывает тех кого не успел обслужить.
Вот система физического сервера:
1. 2 ядра по 1,8GHz
2. ОЗУ 2Гб

Вот на чем сейчас сервер развернут:
mysql + nginx + fastcgi

Так вот вопрос: хотелось бы услышать мнение бывалых, опытных, или просто знающих, на чем можно еще развернуть данный сайт, дабы было максимально быстро, ресурсо ёмко? Или же данная связка является самой быстрой? Может кто делал сравнение быстродействия.
А также возможно кто-то в курсе как оптимизировать работу сервера так чтобы гиганское количество запросов в БД не ложило сервер, может какая-то настройка?
Спасибо.

аватар answer@mail.ru · 01.01.1970 03:00

В принципе, связка достаточно быстрая. Но у вас, скорее всего просто сильно не оптимизированный код и/или SQL-запросы, не используется кэширование и т.д. Я разворачивал примерно на вашей конфигурации на связке Apache + mod_wsgi + Nginx(для статики), и таких мощностей на такую нагрузку хватало. Посмотрите в сторону настроек кэширования запросов MySQL. Конфигурационные параметры типа (цитата):

> query_cache_size — размер кеша запросов. > query_cache_limit — размер максимальной выборки, хранимой в кеше;  > query_cache_min_res_unit — минимальный размер блока, хранимого в кеше;> query_cache_wlock_invalidate - определяет будут ли данные браться из кеша, если таблица, к которым они относятся заблокирована на чтение.

Последние

Похожие