|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Есть база для приложения на C#. Для подключения к базе используется Npgsql-драйвер. Сервер 5.5Gb RAM, Intel(R) Xeon(R) CPU E5430 @ 2.66GHz, SSD В пиковые часы использования может в секунду приходить по 100 запросов чтения и средняя нагрузка на процессор составляет 70%. Слой бизнес-логики 100% на клиенте. Запись может идти только в другую базу на этом же сервере. Данные меняются раз в квартал (раз в три месяца). Как можно снизить нагрузку на процессор сервера? Ибо во время пиковых нагрузок время отклика приложения возрастает в 2-10 раз. Уже работаю над кэшированием (пишу свой кэш). Может можно ещё что-нибудь предпринять? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2017, 22:28 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunos, поставьте расширение pg_stat_statements и настройте в кроне отправку вот такого отчёта себе на почту. Ну или сами периодически смотрите во вьюшку pg_stat_statements. Будете видеть, на какие запросы база тратила время. Всего-то на 100 запросах в секунду у вас гарантированно нет каких-то индексов или сами запросы странные. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2017, 08:54 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Melkij, посмотрел pg_stat_statements. Больше всего total time у запроса с джойном 5 таблиц (не очень больших, но всё же) и фильтрацией по трём параметрам. Пробовал улучшать запрос, но безуспешно. Всевозможные индексы есть и используются. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 03:53 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunosMelkij, посмотрел pg_stat_statements. Больше всего total time у запроса с джойном 5 таблиц (не очень больших, но всё же) и фильтрацией по трём параметрам. Пробовал улучшать запрос, но безуспешно. Всевозможные индексы есть и используются. Это уже другой вопрос. Приводите ваш запрос и его explain analyze. Можно будет подумать. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 08:56 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Maxim Boguk, Вот сам запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и его explain [SRC sql"Nested Loop (cost=1.28..1597.88 rows=1 width=138) Output: company.ticker, rm.hierarchy, rfy.fiscal_year, rv.value, rm.id, rm.id_parent, rm.name Join Filter: (rm.id_type = rtm.id) -> Nested Loop (cost=1.28..1596.83 rows=1 width=142) Output: rm.hierarchy, rm.id, rm.id_parent, rm.name, rm.id_type, rv.value, rfy.fiscal_year, company.ticker -> Nested Loop (cost=0.99..1596.52 rows=1 width=27) Output: rv.value, rv.id_metrick, rfy.fiscal_year, company.ticker -> Nested Loop (cost=0.57..16.62 rows=1 width=19) Output: rfy.fiscal_year, rfy.id, company.ticker -> Index Scan using fi_company_name on public.company (cost=0.29..8.30 rows=1 width=15) Output: company.ticker, company.id Index Cond: (company.ticker = 'AZLK'::bpchar) -> Index Scan using revenue_fiscal_year_pkey on public.revenue_fiscal_year rfy (cost=0.29..8.31 rows=1 width=12) Output: rfy.id_company, rfy.id, rfy.fiscal_year, rfy.end_of_fiscal_year Index Cond: ((rfy.fiscal_year = '2016-01-01'::date) AND (rfy.id_company = company.id)) -> Index Scan using revenue_value_id_metrick_id_fiscal_year_idx on public.revenue_value rv (cost=0.42..1579.67 rows=23 width=16) Output: rv.id, rv.id_metrick, rv.id_fiscal_year, rv.value Index Cond: (rv.id_fiscal_year = rfy.id) -> Index Scan using revenue_metrick_id_idx on public.revenue_metrick rm (cost=0.29..0.31 rows=1 width=119) Output: rm.id, rm.id_type, rm.id_parent, rm.hierarchy, rm.name Index Cond: (rm.id = rv.id_metrick) -> Seq Scan on public.revenue_type_metricks rtm (cost=0.00..1.04 rows=1 width=4) Output: rtm.id, rtm.name Filter: (rtm.name = 'assets_g'::bpchar) ][/SRC] ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 10:57 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Maxim Boguk, и его explain в читабельном виде Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 11:23 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunos, Покажите результат EXPLAIN ANALYZE, а не просто EXPLAIN. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 11:36 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Павел Лузанов, EXPLAIN ANALYZE Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 11:57 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunos, Это на реальной базе, не на тестовой? Впечатление, что по условию company.ticker = 'AZLK' всё-таки строка должна найтись, а её нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 12:50 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Павел Лузанов, это на реальной базе и этот запрос работает, но долго. Скажите, пожалуйста, как вы увидели, что строка не нашлась? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 13:02 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Павел Лузанов, Мой завтык, вот другой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 13:32 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunosэто на реальной базе и этот запрос работает, но долго. А долго это сколько? Второй запрос отработал за 5мс, это долго? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 13:42 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunos Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 13:44 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Павел Лузанов, Просто я не могу понять, почему средняя нагрузка процессора в пиковых два часа больше 70% и время отклика приложения увеличивается до 10 раз? Если запросы более нельзя оптимизировать и индексы навешены и используются. Может быть дело в механизме подключения к серверу? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 14:23 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunosПавел Лузанов, Просто я не могу понять, почему средняя нагрузка процессора в пиковых два часа больше 70% и время отклика приложения увеличивается до 10 раз? Если запросы более нельзя оптимизировать и индексы навешены и используются. Может быть дело в механизме подключения к серверу? Кроме процессора больше ничего мониторите? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 14:52 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunos, Может нужно внимательно смотреть что именно в эти два часа происходит. И не только в базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 15:19 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
Павел Лузанов, На сервере только база, больше ничего нет. Проц грузят процессы postmaster (смотрел top), они просто плодятся быстрее, чем обрабатываются, на сколько я понимаю. При 6 ядрах у меня висит минимум 20 процессов postmaster. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 15:50 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
mefman, Забыл скзаать про память, всегда свободно ещё минимум 200 мб ОЗУ. swap всего 16М, используется на 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 15:57 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunosmefman, Забыл скзаать про память, всегда свободно ещё минимум 200 мб ОЗУ. swap всего 16М, используется на 100% что с io? какой вообще мониторинг есть? чем отличается загрузка бд/машины в спокойные и не спокойные часы? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 15:59 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
mefman, Весь мониторинг - это смотреть real-time в top. Zabbix только планируем поставить, ибо пока всё работало стабильно, надобности в нём не было. iotop не посмотрел, к сожалению. Гляну в следующий раз обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 16:11 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
mefmanчем отличается загрузка бд/машины в спокойные и не спокойные часы? В не спокойные часы нагрузка просто стабильно на уровне 70-100% продолжительное время. В Спокойные просто 20-30%, иногда бывают еденичные вспышки на 70-100%. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 16:16 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunosmefman, Весь мониторинг - это смотреть real-time в top. Удачи ( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2017, 16:21 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
chipakunos... процессы postmaster ... плодятся быстрее, чем обрабатываются ...То есть частые короткие сессии из одного или нескольких запросов? В этом случае стоит использовать Pgpool? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2017, 11:29 |
|
Снижение нагрузки на сервер
|
|||
---|---|---|---|
#18+
LeXa NalBat, Именно так, короткие частые сессии в основном из одного запроса. Сейчас почитаю о pgpool-II. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2017, 12:00 |
|
|
start [/forum/topic.php?fid=53&fpage=71&tid=1996430]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 167ms |
0 / 0 |