170 похожих чатов

@Saluev, помнишь, я там парсер писал? Так вот, потестил парсер,

заменил им старый. И тут понеслись какие-то странные непонятные глюки. Яоткатился, проверил еще десять раз, что работа парсера валидна. Вкатился - опять глюки.

Начинаю разбирать проблему.

1. Профайлинг обоих парсеров показывает стабильно, что новый работает в два раза быстрее старого при одинаковых датасетах в районе 1-2М строк.

2. При включенном новом парсерее вся система работает МЕДЛЕННЕЕ примерно на 20 микросекунд.

3. При старом парсере апи + ангуляры работают корректно.

4. При новом они начинают как-то люто подтормаживать с задержками более секунды и потом пачками события уходить в статус pending

5. Парсер никакого отношения к апи и ангулярам не имеет. Он вообще другим занимается, куда не лезет.

6. netstat показывает, что от количества открытых соединений глюки не зависят.

7. Отладочная информация со стороны бэка(пехепе) показывает весьма непонятные результаты, в которых в принципе ничего военного. Те же разбросы по микросекундам.

5 ответов

14 просмотров

а профайлинг всей системы почему бы не сделать?

Так чем дело-то закончилось?

Марк Егоров- Автор вопроса

Кстати, пока возился со своим парсером и тюнил его, курил всякие хай перфоманс для петона. И наткнулся на фразу чет в стиле ну всем математикам очевидно, почему dict.has_key говно . Блин, я не математик, мне чет неочевидно(((((((((((

Марк Егоров- Автор вопроса

В общем, фронт точно выяснил, что он не при делах. Завтра еще раз посмотрю парсер, если не справлюсь, покажу - мож кто поможет. Блядь, да там по сути нихуя военного: При инициализации класса объявляем словарь. По ряду условий сплитим и обновляем словарь. Когда событие в словаре комплитед, то возвращаем его через переменную, а сам словарь обнуляем. ПО сравнению со старым алгоритмом, развница в одном апдейте

Марк Егоров- Автор вопроса

@Saluev Йя нашель! Ох, прорыли ангулярь, пехепе, апачи, сеть, odbc, чутка редиску, петоны в хвост и в гриву профайлером - ну всё плюс минус одинаково, а лаг есть, причем оно еще странно нестабильный. То есть, то его нет. В итоге всё оказалось просто донельзя: Старый парсер ориентировался по пустой строке. Если она есть, значит событие сформировано - ретюрн. Новый - по следующему ивенту (еще выше писал, что пустая строка не подходит). Сформировали, если видим следующее событие, отдать, очистить, формируем новое. Но что будет если нового события нет?🤔🤔😔 Правильно - Парсер будет его ждать, чтобы отдать предыдущее. Это и есть лаг. В тестах он не был заметен и вооще не был заметен так как при даже минимальной относительно работе событий валится дохренища в секунду. А тут попадаю на простой - и сразу всё стало ясно.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта