Показать сообщение отдельно

  #4  
Старый 17.03.2018, 14:45
Felis-Sapiens
Постоянный
Регистрация: 21.07.2015
Сообщений: 594
С нами: 5691926

Репутация: 171


По умолчанию

Цитата:
Сообщение от Stine  

Эм, и как это может повлиять? Бывают глюки, когда одновременно потоки обращаются, заносится в criticalsection обращение, и проблем нет... тем более обращение только в SetTableDataW , и по умолчанию выключено.

Я не утверждал, что это причина утечек. Просто бросилось в глаза. Если вы знаете, как правильно писать, то OK.

Цитата:
Сообщение от Stine  

Когда выключаю функцию ScanRouter, т.е. идет PrepareRouter и FreeRouter, утечки нет. Когда включена, только ip новый даю, даже из SetTableDataW результаты не забираю, где то за час, при 1000 потоков, от 70 мегабайт, до 600 и out of memory.

Естественно тысяча одновременных вызов ScanRouter значительно увеличивает потребление памяти. Вы уверены, что out of memory вызвана именно утечкой? 600 MB при 1000 активно парсящих потоках выглядят вполне нормально.

На 500 потоках порядка 270MB занято.

В начале потребление памяти немного растёт, наверное быстро проходят IP, где не удаётся загрузить страницу, и накапливаются потоки, получающие данные:



Потом всё выходит на более-менее стационарный уровень:



При завершении потоков память возвращается +/- к исходному значению:



Хотя ошибки в библиотеке могут быть, и хотелось бы видеть stack trace и ip для этих исключений:

Цитата:
Сообщение от Stine  

Странные ошибки которые возвращает ScanRouter:

ERangeError Range check error

EConvertError "" is not valid integer value

EConvertError "1970GMT" is not valid integer value

EConvertError 'Invalid argument to date encode'

EIReadLnMaxLineLengthExceeced with message 'Max line length exceeced'

Если всё же есть сомнения на счёт утечек, давайте тогда продолжим в личке, чтобы здесь не засорять.
 
Ответить с цитированием