Сценарий разогрева Powershell для сайта, который не ждет ответа - PullRequest
0 голосов
/ 02 марта 2019

У меня есть следующий сценарий разминки, который хорошо работает для моих приложений (приложений IIS с несколькими рабочими процессами).Требуется около 1200 запросов к 24 серверам для их достаточного прогрева.

Моя проблема в том, что для его завершения требуется около 25 минут, поскольку запрос ожидает успешного возврата запроса, прежде чем продолжить.

Есть ли способ просто запустить запрос и продолжить без ожиданиядля ответа?

Вот мой PowerShell, который я использую:

$Site = 'http://myipaddress173.28.36.20:1155/api/uri' #, 'http://173.28.20.78:1155/api/uri'
@($Site) | % {
Write-Host "Warming up $($_)"
$i=0
Do {
    $res = Invoke-RestMethod $_ -Method Post -ContentType 'application/json' -Headers @{Authorization="Bearer GHDSBBSXHHX637373dg"; Host="myurl.com"} -Body '{"accountId": 0,"domain":"my","language":"en"}'
    Write-Host "$i = $($_)"
    $i++
} While ($i -le 1200)

1 Ответ

0 голосов
/ 03 марта 2019

Да, каждый запрос выполняется в отдельном потоке.Но ваша команда также касается меня здесь.Я предполагаю, что вы на самом деле не используете этот код http://myipaddress173.28.36.20:1155/api/uri, и «MyIPaddress» является ошибкой вырезания / вставки.

Плюс, кажется, что вы на самом деле не заинтересованы в реальном результате, и этот 1200 выглядит какВы просто пытаетесь сгенерировать 1200 обращений по одному и тому же адресу.Это действительно то, что вы хотите?Мои предложения:

# Force to an array, even if just one.
$Site = @('http://myipaddress173.28.36.20:1155/api/uri',http://173.28.20.78:1155/api/uri')

@($Site) | % {
   Write-Host "Warming up $($_)"
   $i=0

$Body = @{
"accountId": 0
"domain":"my"
"language":"en"}

$Headers = @{
Authorization="Bearer GHDSBBSXHHX637373dg"
Host="myurl.com"} 

$commands = "Invoke-RestMethod $_ -Method Post -ContentType 'application/json' -Headers $headers -Body $body"

Do {
    invoke-command $command -ComputerName localhost
    Write-Host "$i = $($_)"
#  Suggest adding a sleep here..
#  sleep -seconds 1
    $i++
} While ($i -le 1200)

Теперь, это будет публиковать 1200 раз на конкретный URL (если я правильно сделал код), а затем перейти к следующему.

Это имеетвозможность сделать так, чтобы ваша машина работала на медленной скорости для сканирования, поскольку она генерирует МНОГИЕ, МНОГИЕ посещения веб-сайта за доли секунды (и может привести к отказу в обслуживании сервера в течение некоторого периода времени, хотя и короткого), а такжев качестве исчерпания количества исходящих портов, которые ваш клиент может свободно устанавливать соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...