Я использую простую библиотеку PHP для добавления документов в индекс SOLR через HTTP.
В нем задействовано 3 сервера:
- Ящик PHP, в котором выполняется задание индексирования
- Ящик базы данных, в котором индексируются данные.
- Коробка solr.
В 80 документах/сек (из 1 миллиона документов) я замечаю необычно высокую скорость прерывания на сетевых интерфейсах на PHP и solr-боксах (2000/sec, что больше, графики почти идентичны) когда частота прерываний на ящике PHP увеличивается, она также накладывается на поле Solr), но гораздо меньше - на поле базы данных (300/sec). Я предполагаю, что это просто потому, что я открываю и повторно использую одно соединение с сервером базы данных, но каждый запрос Solr открывает новое HTTP-соединение через cURL, благодаря тому, как написана клиентская библиотека Solr.
Итак, мой вопрос:
- Можно ли сделать cURL для открытия сеанса keepalive?
- Что нужно для повторного использования соединения? - Это так же просто, как повторное использование ресурса дескриптора cURL?
- Нужно ли устанавливать какие-либо специальные опции cURL? (например, сила HTTP 1.1?)
- Есть ли какие-либо проблемы с подключением cURL keepalive? Этот script работает в течение нескольких часов; я смогу использовать одно соединение или мне нужно будет периодически подключаться?