soap (adwords) - параллельное выполнение

s1y

Новичок
soap (adwords) - параллельное выполнение

Задача - запустить с 1 машины несколько копий скрипта для работы с google adwords через soap.

При запуске 2 копий скрипта с 1 машины обе работают в 2 раза медленнее (ориентировочно, плюс-минус 20 секунд), чем 1 копия скрипта.

Собсно вопрос - может ли архитектура soap создавать много параллельных соединений для 1 пары сервера-клиента без потери в скорости? Точно не знаю, но по тесту видно, что эти 2 соединения друг-другу мешают (либо отрабатывает 1 запущенное, потом 2, причем 2 ждет 1). FIFO и ничего с этим не поделать?
 

Alexandre

PHPПенсионер
При запуске 2 копий скрипта с 1 машины обе работают в 2 раза медленнее (ориентировочно, плюс-минус 20 секунд), чем 1 копия скрипта.
а как запускал?
сколько процессоров?
Собсно вопрос - может ли архитектура soap создавать много параллельных соединений для 1 пары сервера-клиента без потери в скорости?
конкретно соап - нет
но можно запустить два паралельных скрипта, которые вызывают соап
Точно не знаю, но по тесту видно, что эти 2 соединения друг-другу мешают (либо отрабатывает 1 запущенное, потом 2, причем 2 ждет 1)
скорее всего второе: отрабатывает 1 запущенное, потом 2, причем 2 ждет 1
FIFO и ничего с этим не поделать?
все зависит от того как запускаешь... мы не телепаты, чтоб гадать по звездам, почему FIFO, и что с этим можно сделать?
 

s1y

Новичок
уточняю) возможно, выразился неправильно

запускается 2 окошка браузера с одним и тем же скриптом. Каждая копия скрипта запускает соап. Процессор 1, если это влияет (сильно сомневаюсь).

естественно, запустить точно одновременно в 2х окнах не получается, 1 отрабавтывает раньше другого.

вопрос в том, можно ли вообще сделать так, чтоб эти 2 копии работали асинхронно
 

s1y

Новичок
угадывать можно) Но платформа, как и количество процессоров не имеет значения.

ubuntu 7.10, apache 2.2, php 5.2
 

MiRacLe

просто Чудо
симптомы такие, словно в скриптах используется session_start, так?
 

slach

Новичок
s1y
короче ПОСЛЕДОВАТЕЛЬНО два SoapRequest'а точно не выполняются это факт
если у тебя apache 2.2 под убунтой то это два паралельный независимых форкнутых чайлда апача
SoapClient использует обычные сокеты и чтение\запись из них тоже будет асинхронной

единственное что может выстраивать все это в очередь это google adwords soap API, да и то на стороне сервера, например если там используется какой нибудь общий спул для обработки заданий... кластер BigTable какой нибудь

и при этом задачи пораждаемые вызовом SOAP клиента методов SOAP сервера выстраиваются в очередь на стороне сервера

не зная как устроен google adwords
можно поставить какой нибудь сниффер ethereal и посмотреть как же в реальности происходит по времени общение SOAP клиента с SOAP сервером
 

MiRacLe

просто Чудо
slach
единственное что может выстраивать все это в очередь это google adwords soap API
не единственное.
на клиенте тоже могут быть LOCK_EX на какой-нибудь ресурс (в частности самое распространнённое - открытая сессия)
 

s1y

Новичок
Автор оригинала: slach
s1y
короче ПОСЛЕДОВАТЕЛЬНО два SoapRequest'а точно не выполняются это факт
если у тебя apache 2.2 под убунтой то это два паралельный независимых форкнутых чайлда апача
SoapClient использует обычные сокеты и чтение\запись из них тоже будет асинхронной
само собой разумеется) не вопрос)

единственное что может выстраивать все это в очередь это google adwords soap API, да и то на стороне сервера, например если там используется какой нибудь общий спул для обработки заданий... кластер BigTable какой нибудь

и при этом задачи пораждаемые вызовом SOAP клиента методов SOAP сервера выстраиваются в очередь на стороне сервера
вы потверждаете мои опасения.

к сожалению получить данные о серверной стороне adwords сейчас не получается.
 
Сверху