Как оптимизировать базу данных MySQL для одновременного обслуживания 1000 запросов?
Для таких сайтов, как: linksnappy.com
Можно ли настроить разделение серверов MySQL на один сервер балансировки нагрузки? Так что если один из них перегружен, переключитесь на следующий.
Тот же вопрос для сервера обработки HTTP-запросов.
Другой вопрос: какой сервер мне нужен для одновременного обслуживания 1000 запросов? (http-сервер) Вы видите, что я говорю о сайте загрузки. Сервер просто умирает, когда у нас слишком много запросов на загрузку. В настоящее время у нас есть четырехъядерный процессор Intel XEON 2,4 ГГц с 4 ГБ оперативной памяти.
Начнем с конца:
В настоящее время у нас есть четырехъядерный процессор Intel Xeon 2,4 ГГц с 4 ГБ оперативной памяти.
Возможно, здесь виноват. 4 ГБ ОЗУ - это шутка для четырехъядерного процессора, особенно при обработке тысяч параллельных запросов. 4096 МБ ОЗУ на 2000 запросов (меньшее определение - тысячи) оставляет 2 МБ ОЗУ на запрос (не считая всего остального).
У вас определенно нет ТОЛЬКО проблемы с MySQL. Основная проблема заключается в том, что вам нужна полная инфраструктура, которая позволяет обрабатывать многие тысячи запросов doswload в секунду (или нужно, чтобы кто-то прояснил ваш пост), что означает большую пропускную способность сети, большую пропускную способность ввода-вывода и сервер с гораздо большим количеством оперативной памяти. чем - извините - дешевая устаревшая рабочая станция начального уровня (вот так - моя рабочая станция разработчика имела 4 ГБ около 3 лет назад, недавно перешла на 8 ГБ). Вам также понадобится подсистема ввода-вывода для обработки нагрузки, что, возможно, означает много-много дисков в хорошем аппаратном RAID-контроллере (забудьте здесь о программном обеспечении - вам нужно что-то с большим количеством функций, чем ваш программный рейд).
Балансировка нагрузки HTTP: легко выполнять программно или аппаратно (для этого у F5 есть оборудование). В зависимости от вашего программирования (сеансов) вам могут потребоваться закрепленные сеансы, чтобы один и тот же клиент снова попал в тот же ящик.
Первым шагом будет отделение загружаемых файлов от фактического веб-сайта (отдельный sdomain / subdomain), а в следующем процессе их перенос на отдельные серверы. База данных MySQL (ну, база данных - это ни в коем случае не является специфическим для MySQL) также может перейти на отдельный сервер.
2000 запросов в секунду - это не то, что требует нескольких серверов, если только запросы не являются сложными, что, скорее всего, не так. Основное ограничение этой производительности, скорее всего, связано с вводом-выводом. В вашем случае я уверен, что вы соедините 4 ГБ ОЗУ с дисковой подсистемой низкого уровня. Чтобы дать вам представление о том, как может выглядеть сервер db - моя собственная основная база данных (для хранения финансовых данных) имеет около 10 высокоскоростных дисков (Velociraptors, 10k RPM), чтобы убедиться, что база данных (в моем случае SQL Server) не превратиться в узкое место. У меня все еще есть проблемы с производительностью на стороне ввода-вывода ... поэтому, скорее всего, я перенесу некоторые вещи на SSD. Технически, если только не выполняется перенос из памяти (что очень маловероятно с вашей оперативной памятью 4 ГБ, используемой для всех настроек), подсистема ввода-вывода является основным ограничением для баз данных.
В конце концов, многое зависит от вашего программирования. Вы не получите достойного ответа - это требует тщательного планирования и просмотра вашего кода.
Количество запросов в секунду - магическое число, не имеющее смысла. Я могу обслуживать 10 000 запросов в секунду с помощью веб-сервера, на котором запущен hello world, и 0,0001 запросов в секунду с помощью некоторого раздутого ПО за тем же веб-сервером.
Какой сервер вам нужен? Вам нужен человек, который знает, что они делают, а не новый сервер. Но отвечу на ваш вопрос «большой вид».