mysql - падение производительности по ethernet
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
mysql - падение производительности по ethernet
Собственно, сабж. Есть некий веб-ресурс, при формировании отчета он выкачивает порядка 100Мб с мускуля.
Обсуждать его сразу скажу не надо, т.к. самопал и не мой)
Мускуль и веб были на одном серваке, при этом страничка генерилась за порядка 30 секунд. Сейчас решили разнести по разным серверам мускуль и апач (второй по железу не сильно ушел от первого). И.. страничка стала генериться порядка 70 секунд.
При этом
- производительности нового мускуля хватает - идл порядка 90% при формировании отчета
- дисковая подсистема не нагружается - идл практически 100%
- сетевая подсистема дает во время формирования если все на одном сервере - порядка 3МБ/с на lo0, после того, как разнесли, порядка 1.5МБ/с на сетевой карте мускуля.
- И, самое нтересно. Если при разнесенной схеме во время формирования отчета запустить mysqldump, отчет формируется за те же 70 секунд, дамп отрабатывает довольно шустро и трафик на сетевой мускуля спокойно поднимается до 15МБ/с (сеть гигабит).
В чем прикол?
Обсуждать его сразу скажу не надо, т.к. самопал и не мой)
Мускуль и веб были на одном серваке, при этом страничка генерилась за порядка 30 секунд. Сейчас решили разнести по разным серверам мускуль и апач (второй по железу не сильно ушел от первого). И.. страничка стала генериться порядка 70 секунд.
При этом
- производительности нового мускуля хватает - идл порядка 90% при формировании отчета
- дисковая подсистема не нагружается - идл практически 100%
- сетевая подсистема дает во время формирования если все на одном сервере - порядка 3МБ/с на lo0, после того, как разнесли, порядка 1.5МБ/с на сетевой карте мускуля.
- И, самое нтересно. Если при разнесенной схеме во время формирования отчета запустить mysqldump, отчет формируется за те же 70 секунд, дамп отрабатывает довольно шустро и трафик на сетевой мускуля спокойно поднимается до 15МБ/с (сеть гигабит).
В чем прикол?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- ст. прапорщик
- Сообщения: 568
- Зарегистрирован: 2009-09-04 12:23:30
- Откуда: Где-то в России...
- Контактная информация:
Re: mysql - падение производительности по ethernet
в канале задержки большие?
www.info-x.org - информационный ресурс о ОС FreeBSD.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
Re: mysql - падение производительности по ethernet
Канал - сервер - коммутатор(гигабитная циска) - сервер. Коммутатор не нагружен вообще.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
Re: mysql - падение производительности по ethernet
Сам себе и отвечу. Профилирование среднестатистического запроса показало некую разницу в "sending cache result to client" у локального и удаленного подключения. С учетом того, что (как выяснилось) для негерации страницы используется порядка 200.000 запросов, разница в скорости выполнения связана, скорее всего, с разницей скорости пересылки данных. Для одного запроса она микросекунды, для 200.000 - это уже секунды.
"Волшебная" математика показывает, что при средней задержке пакета 0,16мс - 200.000 пакетов дадут примерно 30 секунд. Но это так, совпадение.
Так что вынос оправдан далеко не всегда.
"Волшебная" математика показывает, что при средней задержке пакета 0,16мс - 200.000 пакетов дадут примерно 30 секунд. Но это так, совпадение.
Так что вынос оправдан далеко не всегда.
-
- лейтенант
- Сообщения: 645
- Зарегистрирован: 2008-03-09 11:32:12
- Откуда: Москва
Re: mysql - падение производительности по ethernet
Посмотрите курс лекций по БД на сайте http://www.lektorium.tv/course/?id=22894.
Буквально со второй лекции объясняется причина ваших задержек, и как их можно избежать.
Буквально со второй лекции объясняется причина ваших задержек, и как их можно избежать.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
Re: mysql - падение производительности по ethernet
В двух словах объяснить можете?
-
- лейтенант
- Сообщения: 645
- Зарегистрирован: 2008-03-09 11:32:12
- Откуда: Москва
Re: mysql - падение производительности по ethernet
Если коротко то причина в том, что сеть это всегда медленнее чем локальная обработка.
Особенно если запросов много.
Поэтому для уменьшения времени генерации страницы можно использовать следующие способы:
- минимизировать количество запросов в БД;
- по возможности хранить данные в БД в готовом виде;
- кэшировать данные везде где это возможно.
Особенно если запросов много.
Поэтому для уменьшения времени генерации страницы можно использовать следующие способы:
- минимизировать количество запросов в БД;
- по возможности хранить данные в БД в готовом виде;
- кэшировать данные везде где это возможно.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
Re: mysql - падение производительности по ethernet
Ну, это общие рекомендации по увеличению производительности. В моем же случае поможет, думается, только уменьшение кол-ва запросов.
Как итог, можно сказать, что при большом количестве запросов вынос ьускуля отдельно не всегда оправдан. Машина может иметь idle > 90%, в то время, как получение результата окажется более менедленным.
Как итог, можно сказать, что при большом количестве запросов вынос ьускуля отдельно не всегда оправдан. Машина может иметь idle > 90%, в то время, как получение результата окажется более менедленным.
-
- ст. лейтенант
- Сообщения: 1374
- Зарегистрирован: 2010-02-05 0:21:40
Re: mysql - падение производительности по ethernet
stored procedures должны помочь. Тогда 200.000 запросов будут выполняться локально на сервере БД, а на клиента перешлется только результат.
Но это логику переписывать надо, что далеко не всегда возможно.
Но это логику переписывать надо, что далеко не всегда возможно.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
Re: mysql - падение производительности по ethernet
Ну, это только уменьшит трафик в сторону сервера, передающий тело запроса. В итоге получится 200.000 вызываемых процедур.
-
- ст. лейтенант
- Сообщения: 1374
- Зарегистрирован: 2010-02-05 0:21:40
Re: mysql - падение производительности по ethernet
Это почему? А загнать 200.000 запросов в одну процедуру религия не позволяет?Al писал(а):Ну, это только уменьшит трафик в сторону сервера, передающий тело запроса. В итоге получится 200.000 вызываемых процедур.
-
- подполковник
- Сообщения: 3923
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Re: mysql - падение производительности по ethernet
Ну у вас и отчет, у меня примерно 5-10 запросов и то только 1 емкий остальные так, для формирования заголовков...Al писал(а):Ну, это только уменьшит трафик в сторону сервера, передающий тело запроса. В итоге получится 200.000 вызываемых процедур.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
Re: mysql - падение производительности по ethernet
Не позволяет. Обработкой данных занимается php или что-то еще. База используется просто как справочник.FiL писал(а):Это почему? А загнать 200.000 запросов в одну процедуру религия не позволяет?Al писал(а):Ну, это только уменьшит трафик в сторону сервера, передающий тело запроса. В итоге получится 200.000 вызываемых процедур.
-
- ст. прапорщик
- Сообщения: 501
- Зарегистрирован: 2007-10-18 13:42:48
- Откуда: Тверь
- Контактная информация:
Re: mysql - падение производительности по ethernet
Это самопал. При том не наш)snorlov писал(а):Ну у вас и отчет, у меня примерно 5-10 запросов и то только 1 емкий остальные так, для формирования заголовков...Al писал(а):Ну, это только уменьшит трафик в сторону сервера, передающий тело запроса. В итоге получится 200.000 вызываемых процедур.