Сколько одновременных запросов сценариев веб-сайта я могу обработать с 8-ядерным, 16-поточным процессором, прежде чем снизить производительность? - PullRequest
0 голосов
/ 16 апреля 2020

У меня 8 ядерный, 16 потоковый процессор. Я написал скрипт, который отправляет тысячи электронных писем, и это задача, требующая значительных ресурсов процессора. Первоначально я выполнял свой сценарий только один раз из веб-браузера и ждал несколько минут до завершения процесса. Затем я понял, что у меня 8-ядерный, 16-поточный процессор, и я открыл несколько вкладок в веб-браузере и выполнил один и тот же сценарий с соответствующими параметрами из 4 разных вкладок. Тысячи писем были отправлены в 1/4 от времени, которое потребовалось бы, если бы я отправил их все сразу с одной вкладки.

Отправка 8000 писем с одновременным выполнением моего сценария 4 раза из разных вкладки заняли 1/4 времени, которое потребовалось бы для отправки 8000, выполнив один сценарий один раз и дождавшись завершения процесса. Я воспользовался тем, что у меня был 8-ядерный, 16-поточный процессор. Сколько раз я могу запустить свой сценарий параллельно, чтобы ускорить процесс еще больше? Если бы я мог запустить его 16 раз одновременно, это заняло бы 1/16 времени! Это то, что мне позволяет делать 16 потоковый процессор? Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2020

Я выполнил скрипт 8 раз одновременно с разных вкладок в веб-браузере. Каждая вкладка была настроена в параметрах для отправки 2000 электронных писем, так что 2000 электронных писем * 8 вкладок = 16000 электронных писем, отправленных одновременно, выполняя один и тот же скрипт 8 раз. Мое обоснование состояло в том, что 8-ядерный 16-поточный процессор, который у меня есть, должен быть в состоянии обрабатывать это и отправлять 16000 электронных писем быстрее, чем если бы я отправлял их все, выполняя свой сценарий один раз.

Из журналов только 5 из 8 казней могут выполняться одновременно. Когда один из первых 5 финишировал, начался шестой. Когда остальные из первых 5 финишировали, начались седьмое и восьмое. Так что, по крайней мере, я знаю, что не нужно запускать больше 4. Когда запущено 5, я отправил 10000 писем за 463 секунды.

Мой скрипт работает таким образом, что каждые 100 успешно отправленных писем я записываю приращение в база данных.

Веб-сайт вышел из строя, когда у меня было это в базе данных:

`emails`.`id`: 35 --> `emails`.`sent`=1300
`emails`.`id`: 34 --> `emails`.`sent`=1300
`emails`.`id`: 33 --> `emails`.`sent`=1400
`emails`.`id`: 32 --> `emails`.`sent`=1400
`emails`.`id`: 31 --> `emails`.`sent`=1400

Когда веб-сайт вернулся снова, первое, что я увидел, было:

`emails`.`id`: 38 --> `emails`.`sent`=200
`emails`.`id`: 37 --> `emails`.`sent`=200
`emails`.`id`: 36 --> `emails`.`sent`=300
`emails`.`id`: 35 --> `emails`.`sent`=2000
`emails`.`id`: 34 --> `emails`.`sent`=2000
`emails`.`id`: 33 --> `emails`.`sent`=2000
`emails`.`id`: 32 --> `emails`.`sent`=2001
`emails`.`id`: 31 --> `emails`.`sent`=2001

В конце концов, я успешно отправил ~ 8000 писем:

`emails`.`id`: 38 --> `emails`.`sent`=2000
`emails`.`id`: 37 --> `emails`.`sent`=2000
`emails`.`id`: 36 --> `emails`.`sent`=1999
`emails`.`id`: 35 --> `emails`.`sent`=2000
`emails`.`id`: 34 --> `emails`.`sent`=2000
`emails`.`id`: 33 --> `emails`.`sent`=2000
`emails`.`id`: 32 --> `emails`.`sent`=2001
`emails`.`id`: 31 --> `emails`.`sent`=2001
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...