Исключения тайм-аута многопоточного приложения -> Интеграция OpenERP - PullRequest
0 голосов
/ 12 августа 2011

Я пишу приложение .net, которое взаимодействует с OpenERP через службу xml-rpc.Для этого я использую вычислительную библиотеку cook.

цель этого приложения - загрузить (или обновить) огромное количество продуктов в OpenERP> 100000, сделать это синхронно, требует времени, и поэтому я обернул вызовв вызове Parallel.ForEach,

проблема в том, что я продолжаю получать исключение тайм-аута для некоторых потоков, и я не могу понять, где проблема, это какая-то конфигурация, которую нужно настроить??, -> нужна помощь.

вот моя конфигурация:

  • Тайм-аут библиотеки xml-rpc установлен в: 16 мин
  • ParallelOptions -> MaxDegreeOfParallelism установлен в 6
  • , а максимальное количество соединений установлено в 36

Конфигурация соединения:

<system.net>
    <connectionManagement>
        <add address="*" maxconnection="36" />
    </connectionManagement>
</system.net>

на момент написания, яЯ тестирую с 9 продуктами, с вышеупомянутыми настройками, таймаутом в 4 потока, включая основной

Спасибо всем, жду ваших ответов.

Abdelkrim.

1 Ответ

0 голосов
/ 20 августа 2011

Если вы собираетесь «забивать» сервер OpenERP 6-ю потоками, выполняющими загрузку данных, вполне вероятно, что вы столкнетесь с конфликтами на уровне транзакций базы данных. Я не уверен, почему это полностью истекло, я ожидал бы задержки или исключения тупика.

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

Конечно, это все домыслы с моей стороны. Измерьте это и опубликуйте результаты.

...