Здравствуйте!
Подскажите люди добрые =)
Сделал шаблон суть такая идет запрос к API получаю данные после провожу разбор во время которого имеем несколько обращений к БД т.е. разносим данные по БД далее повторяем , все это дело в цикле 100 повторений , еще есть кубик C задержка 200мс т.к. API не позволяет более 5 обращений в секунду (защита).
Так вот запускаю, все работает так как нужно при этом отслеживаю время выполнения цикла (100 повторений) выходит один поток справляется за 0.8 мин меня все устраивает, подключаю потоки и тут такая картина
5 потоков = 0.9 мин.
10 потоков = 1 мин.
15 потоков = 1.05 мин.
20 потоков = 1.1 мин.
25 потоков = 1.2 мин.
30 потоков = 1.3 мин.
35 потоков = 1.8 мин.
40 потоков = 2 мин.
45 потоков = 2.2 мин.
50 потоков = 2.4 мин.
60 потоков = 3.5-4 мин.
я подумал что дело в БД оптимизировал как мог увеличил количество соединений памяти и прочее есть небольшой прирост производительности но при оптимальном количестве потоков при дальнейшем увеличении всеравно идет увеличение времени выполнения
5 потоков = 0.75 мин.
10 потоков = 0.9 мин.
15 потоков = 1 мин.
20 потоков = 1 мин.
25 потоков = 1.1 мин.
30 потоков = 1.1 мин.
35 потоков = 1.5 мин.
40 потоков = 2 мин.
45 потоков = 2.2 мин.
50 потоков = 2.4 мин.
60 потоков = 3.5-4 мин.
Делал трассировку вижу что проскакивает увеличение времени выполнения некоторых кубиков к примеру 350мс при этом это кубик присвоения значения переменной далее норм и так по всем .
Прочитал что может быть сеть не дает у меня показывает максимум соединений 1600 использовано 350
Вот сижу не понимаю неужели я уперся в железо ?
При работе 30 потоков ЦП 35% ОЗУ 10Гб , при работе 60 потоков ЦП 75 - 100% ОЗУ 11Гб
У меня по железу:
Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz 2.80 GHz
ОЗУ 32 GB
SSD
Подскажите в чем может быть проблема или я действительно упёрся в железо ?
Подскажите люди добрые =)
Сделал шаблон суть такая идет запрос к API получаю данные после провожу разбор во время которого имеем несколько обращений к БД т.е. разносим данные по БД далее повторяем , все это дело в цикле 100 повторений , еще есть кубик C задержка 200мс т.к. API не позволяет более 5 обращений в секунду (защита).
Так вот запускаю, все работает так как нужно при этом отслеживаю время выполнения цикла (100 повторений) выходит один поток справляется за 0.8 мин меня все устраивает, подключаю потоки и тут такая картина
5 потоков = 0.9 мин.
10 потоков = 1 мин.
15 потоков = 1.05 мин.
20 потоков = 1.1 мин.
25 потоков = 1.2 мин.
30 потоков = 1.3 мин.
35 потоков = 1.8 мин.
40 потоков = 2 мин.
45 потоков = 2.2 мин.
50 потоков = 2.4 мин.
60 потоков = 3.5-4 мин.
я подумал что дело в БД оптимизировал как мог увеличил количество соединений памяти и прочее есть небольшой прирост производительности но при оптимальном количестве потоков при дальнейшем увеличении всеравно идет увеличение времени выполнения
5 потоков = 0.75 мин.
10 потоков = 0.9 мин.
15 потоков = 1 мин.
20 потоков = 1 мин.
25 потоков = 1.1 мин.
30 потоков = 1.1 мин.
35 потоков = 1.5 мин.
40 потоков = 2 мин.
45 потоков = 2.2 мин.
50 потоков = 2.4 мин.
60 потоков = 3.5-4 мин.
Делал трассировку вижу что проскакивает увеличение времени выполнения некоторых кубиков к примеру 350мс при этом это кубик присвоения значения переменной далее норм и так по всем .
Прочитал что может быть сеть не дает у меня показывает максимум соединений 1600 использовано 350
Вот сижу не понимаю неужели я уперся в железо ?
При работе 30 потоков ЦП 35% ОЗУ 10Гб , при работе 60 потоков ЦП 75 - 100% ОЗУ 11Гб
У меня по железу:
Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz 2.80 GHz
ОЗУ 32 GB
SSD
Подскажите в чем может быть проблема или я действительно упёрся в железо ?