
Just
15.06.2019
13:16:45
Подскажите. Поднял на сервере ubuntu 18, postgres 10, nginx, gunicorn. При селекте данных из бд при большой выборке сервер падает по таймауту, хотя и у , gunicorn и у nginx тайм-аут увеличил, но это не самое критичное, самое критичное то, что gunicorn не очищает оперативную память после этих выборок, в итоге забирает все доступные 16гб и сервер зависает. Как решить, в какую сторону копать?

Tishka17
15.06.2019
13:18:45
1. Не делать таких выборок, это все таки веб приложение
2. Это не gunicorn очищает, а питон. Проверяй что ты написал
3. В крайнем случае можно гуникорну сказать убивать воркеры после какого-то количества запросов
Если запрос выполняется больше 1 секунды, ты явно что-то делаешь не то
В идеале сервер конечно должен отвечать за 0.1

Google

Tishka17
15.06.2019
13:20:52
Но тут уже надо оптимизировать

Just
15.06.2019
13:21:33
Бд 3 Гб, поля в ней типа Текст, Контекстные индексы, векторный поиск

Tishka17
15.06.2019
13:22:40
Сложно, понял
Ну, короче все равно вопрос к твоему коду
И почему в питон прилетает много данных

Just
15.06.2019
13:26:38
Данных то и не много, вопрос в том что поиск отрабатывает медленно и это вешает все по таймауту и эти данные какого-то фига висят в оперативке

Tishka17
15.06.2019
13:30:58
Точно они в питоне висят?
Ну и медленно отрабатывающий поиск в любом случае надо чинить

Just
15.06.2019
13:33:41
Поиск да, надо чинить, но он максимум отрабатывает за 75с, что не особо плохо, обычно 12-13с, все зависит от сложности запроса. Сами процессы gunicorn висят и толстеют

Tishka17
15.06.2019
13:34:23
12-13 уже в 13 раз хуже чем должен и в 100 раз хуже чем желательно

Alex
15.06.2019
13:34:59
можешь начать с того что посмотреть EXPLAIN запроса

Just
15.06.2019
13:36:18
Запросы оптимизированы настолько, насколько позволяет сервер, индексы и статистика, все сделано и собрано, не в ту сторону

Google

Tishka17
15.06.2019
13:39:04
Запрос 70 секунд звучит так как будто, его не надо выполнять сразу, а стоит ставить в очередь и потом уведомлять клиента о результате

Alex
15.06.2019
13:39:05

Tishka17
15.06.2019
13:40:23
Но вообще странно, что память течет

Alex
15.06.2019
13:41:16
кто сказал что она течет

Tishka17
15.06.2019
13:41:26
В первом сообщении

Alex
15.06.2019
13:41:33

Tishka17
15.06.2019
13:41:33
Говорит воркеры съедают все память постепенно

Alex
15.06.2019
13:41:36
вопрос как определил

Just
15.06.2019
13:42:10
Как такое определил? Открыл диспетчер и увидел, что воркеры съели все
В этом и основной вопрос

Tishka17
15.06.2019
13:42:22
Как бы если в клиент летит 100 строк из таблицы. И у нас 1 rps, это должно полгода течь

Alex
15.06.2019
13:42:50

Tishka17
15.06.2019
13:42:52
А вряд ли тут больше 1 рпс с такой скоростью ответа

Just
15.06.2019
13:43:28

Alex
15.06.2019
13:43:41
тут бы мониторинг не повредил.
на крайний случай гуникорн воркеры можно перезагружать по количеству запросов

Just
15.06.2019
13:44:23
Где такая настройка?

Alex
15.06.2019
13:44:36

Google

Mew
15.06.2019
13:44:41
Смотрю мануалы для написания ботов под Telegram. Хочу понять, какая библиотека для разработки telegram-бота наиболее функциональна и понятна?
Вообще, я нашел две библиотеки, которые встречались наиболее часто:
- pyTelegramBotAPI (telebot)
- python-telegram-bot (telegram.ext)
Буду признателен, если поясните, какая между ними разница и куда направляться новичку.

Alex
15.06.2019
13:44:50
вместо полноценного RCA

Tishka17
15.06.2019
13:44:52
5% от 16 гигов за раз?

Just
15.06.2019
13:45:29
5% от 3х Гб это 150мб

Tishka17
15.06.2019
13:45:41
150 метров за один запрос? Ух

TpouHuK
15.06.2019
13:45:42

Alex
15.06.2019
13:45:46
это 150мб сырых данных

Tishka17
15.06.2019
13:45:58
Дохуя, надо сказать

Alex
15.06.2019
13:46:02
в питоне это чуть больше все же

Tishka17
15.06.2019
13:46:20
А потом ещё релокации на все это накладывают, что процесс съел гига два

Just
15.06.2019
13:48:10
5 воркеров, едят сначала мелочи, потом гиг, потом выше

Tishka17
15.06.2019
13:48:53
5 по два гига без проблем десятку
И это не утечки

Alex
15.06.2019
13:49:03
зы: про сервер зависает поподробнее
зыы: а вот нехуй на сервере своп держать.

Tishka17
15.06.2019
13:49:34
Ну короче, имхо проблема в больших данных
Могу предложить уменьшить число воркеров

Alex
15.06.2019
13:50:03
я пока что проблем никаких с утечкой не вижу
я вижу проблему с дофига медленными синхронными запросами, которые вываливаются по таймауту

Google

Alex
15.06.2019
13:50:34
и попытку пациента решать проблему увеличением таймаутов

Bogdan (SirEdvin)
15.06.2019
14:13:20

Alex
15.06.2019
14:14:50

Bogdan (SirEdvin)
15.06.2019
14:16:38
оптимизация потребления памяти на случаи, когда у вас не весь код используется часто, например

Alex
15.06.2019
14:21:52
Т.е. ситуации, когда своп используется не для сбрасывания редкоиспользуемых таблиц памяти на диск, а просто процессы не влезают в память - в принципе не должно быть.

Andrey
15.06.2019
14:35:57
поддержу за своп. Особенно когда сервер на ссд, то деградация не катастрофическая. даёт время среагировать на уведомление от мониторинга.

Alex
15.06.2019
14:41:02

Andrey
15.06.2019
14:41:25

Александр
15.06.2019
14:42:12
Где по ООП на python найти задачек? От простого к сложному, желательно
На русском

Andrey
15.06.2019
14:43:26
На русском
напиши программу для изучения английского с помощью ооп

Александр
15.06.2019
14:43:54

Andrey
15.06.2019
14:44:18

DeepHill
15.06.2019
14:44:27

Александр
15.06.2019
14:44:51
Мне из области нужно "реализуйте объект стул с такими то параметрами"
И с подробными советами как и почему лучше использовать это так
Просто на Java таких задач полно, но python же динамический язык, поэтому, будет крайне сложно адаптировать его правильно

Andrey
15.06.2019
14:46:57
так и запишем - Питон это динамический язык

DeepHill
15.06.2019
14:48:07
С Википедии хоть начал для общего понимания...

Google

DeepHill
15.06.2019
14:48:28
На русском

Александр
15.06.2019
14:49:07

DeepHill
15.06.2019
14:49:26
Те до задач есть что почитать

Александр
15.06.2019
14:50:24
Вот именно!
Поэтому я и прошу от простого к сложному, с практикой на русском языке
Ладно, буду адаптировать из hf код на python с java (

DeepHill
15.06.2019
14:54:53

Mikhail
15.06.2019
14:57:56
Мде, рили?

polaris
15.06.2019
14:58:26
БеЗконтактный?? В школу не ходил?

qwertyOleg
15.06.2019
14:59:22
Кто нибудь репортнет?