У меня сейчас четырехъядерный процессор xeon, 8 ГБ оперативной памяти и только 2 диска SATA по 1 ТБ. Я пытаюсь понять, как масштабировать мое приложение, чтобы обрабатывать как можно больше нагрузки и трафика в день. У меня есть отраслевой сетевой сайт, и в настоящее время он набирает около 30 000 регистраций в день, 60 000 UV и 600-1 000 000 просмотров страниц в день. Все шло так медленно, что мне пришлось отключить сервер, и теперь я теряю деньги и трафик.
Я почти уверен, что часть этого - код PHP и запросы MySQL (нанятые из Индии). Что я могу сделать, чтобы оптимизировать и убедиться, что сервер обрабатывает как можно больше трафика без узких мест. Поскольку я ожидаю еще большего количества регистраций каждый день. Это сайт с очень интенсивным использованием баз данных, поскольку он является «сетевым» сайтом для определенной ниши, и вы должны войти в систему, поэтому все вращается вокруг MySQL.
PS. CentOS 5 64-битная, PHP5, MySQL5. Я знаю, что это база данных MyISAM, и я почти уверен, что они не слишком хорошо индексировали таблицы.
Спасибо за совет!
Прошу прощения, но мой честный ответ таков: если вы даже не знаете, как проверить, проиндексирована ли ваша база данных, вы так далеки от своей лиги, что ваша только вариант - нанять профессионала, учитывая масштаб вашего проекта. Не группа дешёвых рабов кода, а кто-то с большим опытом работы с такими сайтами, как ваш.
Мы можем дать вам множество советов, но правильная настройка такого сайта - это работа, требующая опыта, и ее невозможно выполнить, задав несколько вопросов по ServerFault.
Есть несколько вещей, которые вы можете сделать и проверить, чтобы получить больше информации о проблеме и, в свою очередь, лучше ее решить:
sar
или более полный пакет, такой как Nagios / Zabbix. Это поможет вам сейчас сузить причину, а также позже увидеть, насколько эффективны (или нет) ваши решения. В идеале вы хотите активно масштабировать, прежде чем вам это действительно нужно.MaxClients
в Apache, чтобы ограничить количество пользователей и, надеюсь, снизить нагрузку на сервер. Это может сделать ваш сайт хотя бы частично доступным и пригодным для использования.top
. Если ваше приложение действительно много пишет, я бы ожидал / хотел, чтобы оно использовало по крайней мере 1 ГБ, если не несколько больше, в зависимости от размера вашей базы данных. Если он использует всего несколько 100 МБ или использует 6-7 ГБ, вероятно, проблема с конфигурацией.Надеюсь, это поможет некоторым и удачи!
В зависимости от вашего денежного потока очень быстрым (и грязным) решением может быть просьба к вашей хостинговой компании обновить вас до сервера SAS / SCSI, который также переведет вас в категорию корпоративных серверов. Большие диски SATA медленные, и ваш сервер может быть хорош для ЦП, но плох для ввода-вывода.
Поздравляю с регистрационными номерами, кстати. Ваша проблема - это хорошая проблема.
Вам необходимо использовать «MySQL workbench» для входа на сервер MySQL. После того, как вы вошли в систему как «root» (с localhost, если вы не изменили разрешения, разрешающие удаленный вход), вы сможете увидеть индексы. Затем, если у вас их нет, просто вопрос их создания, и я думаю, это должно иметь довольно хорошую разницу в скорости с вашим приложением. Чтобы помочь с созданием индексов, вам необходимо ознакомиться с инструкциями на ОБЪЯСНИТЕ команда.