Очень долгая работа со списками (любые операции)

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
Здравствуйте! Буквально на днях столкнулся с тем, что на одном из выделенных серверов (дедик 32GB RAM, SSD) работа со списками происходит ну ооочень медленно. При этом работа замедляется не сразу, а спустя какое-то время (5-15 минут после запуска). И чем больше потоков, тем быстрее происходит замедление. Вот пример трассировки:
Всё, что подчёркнуто — это операции добавления в список строки. В данном случае строка — это просто одна цифра. При этом в списке суммарно порядка 20-30 строк. На скрине 11 операций добавления заняли чуть более 18 секунд. Притом любые другие операции (взятие строки, удаление строк) работает аналогично медленно — в среднем 3-5 секунд на операцию. Да, списки не синхронизируются с файлами, т.е. у каждого потока свой уникальный список. Как думаете, с чем это может быть связано?
 
Последнее редактирование:

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
Очень странная фигня... может, там внутри какие-то необработанные исключения кидаются? Я бы лог Зенки посмотрел и в Process Monitor поглядел, что происходит вообще в эти секунды.
 

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
Провёл сегодня доп. тестирование. Сделал шаблон, суть которого заключается в простом формировании списка из заданного количества строк. Каждая строка — это просто число с порядковым номером самой строки (от 0 до N). В тесте использовал формирование списка из 1000 строк. Сперва запустил шаблон в 80 потоков на домашнем ноутбуке (2 ядра Intel i5 2.4GHz, 4GB RAM). Вот результат:
Затем этот же шаблон с теми же настройками запустил на выделенном сервере (8 ядер Xenon E3 3.4GHh, 32GB RAM). Результат следующий:
При этом изначально, до тех пор, пока шаблон не разогнался примерно до 70-80 потоков, результат был даже лучше, чем на ноуте, а затем время начало резко увеличиваться. В связи с этим вновь вопрос — как понять, что происходит в этот момент и пофиксить проблему?
может, там внутри какие-то необработанные исключения кидаются?
А есть варианты как это можно отследить?
Я бы лог Зенки посмотрел и в Process Monitor поглядел, что происходит вообще в эти секунды.
Вроде и там и там чисто. Или может куда поконкретнее надо посмотреть?
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
О внутренних ошибках можно только в логах посмотреть. Если там ничего нет, остаются Process Monitor, системные сообщения винды, счётчики производительности диска (может, просто в диспетчере задач посмотреть диаграмму использования диска для начала), дальше не знаю)) Может, какую-то тулзу типа Benchmark Tool прогнать, протестировать дисковую подсистему в принципе.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 270
Благодарностей
5 856
Баллы
113
Включите подробный лог в настройках программы.
И посмотрите какие ошибки возникают в FileManager.log в папке Progs\Logs в директории зеннопостера.
Подробный лог.png

Вообще конечно хотелось бы знать логику работы со списками - какие операции, как идет сохранение в файл.
Вы уверены, что файл не огромный и туда не пишется большое кол-во строк? Обычно такие проблемы именно из-за этого.
 
  • Спасибо
Реакции: Nick

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
О внутренних ошибках можно только в логах посмотреть. Если там ничего нет, остаются Process Monitor, системные сообщения винды, счётчики производительности диска (может, просто в диспетчере задач посмотреть диаграмму использования диска для начала), дальше не знаю)) Может, какую-то тулзу типа Benchmark Tool прогнать, протестировать дисковую подсистему в принципе.
Тоже на диск сперва подумал, но нет. Монитор говорит, что средний загруз в пике работы шаблона всего 2,7 Мбит. Ну и плюс это SSD. На ноуте обычный SATA II и проблемы этой нет.
 

workoles

Client
Регистрация
02.05.2015
Сообщения
276
Благодарностей
81
Баллы
28
Включите подробный лог в настройках программы.
И посмотрите какие ошибки возникают в FileManager.log в папке Progs\Logs в директории зеннопостера.
Посмотреть вложение 20596
Ок. Этот момент проанализирую. Может, действительно, что-нибудь всплывёт.
Вообще конечно хотелось бы знать логику работы со списками - какие операции, как идет сохранение в файл.
Дело в том, что задержки появляются в работе всех списков, используемых в проекте, сразу, в том числе при работе с теми, которые вообще с файлами не синхронизируются. Т.е. у них логика разная, операции тоже любые - запись в список, чтение из него, выделение подсписка, очистка списка и т.д. В примере выше вообще всего один список без синхронизации с файлом. Лишнего там ничего нет. Приложил проект к посту.
Вы уверены, что файл не огромный и туда не пишется большое кол-во строк? Обычно такие проблемы именно из-за этого.
Да, уверен. Посмотрите приложенный проект.
 

Вложения

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)