J'utilise une simple bibliothèque PHP pour ajouter des documents à un index SOLR, via HTTP.
Il y a 3 serveurs impliqués, actuellement :
- La boîte PHP qui exécute le travail d'indexation
- Une boîte de base de données contenant les données à indexer
- La boîte de Solr.
À 80 documents/seconde (sur 1 million de documents), je remarque un taux d'interruption inhabituellement élevé sur les interfaces réseau des boîtes PHP et Solr (2000/seconde ; de plus, les graphiques sont presque identiques -- lorsque le taux d'interruption de la boîte PHP atteint un pic, il atteint également un pic sur la boîte Solr), mais beaucoup moins sur la boîte de base de données (300/seconde). J'imagine que c'est simplement parce que j'ouvre et réutilise une seule connexion au serveur de base de données, mais chaque requête Solr ouvre actuellement une nouvelle connexion HTTP via cURL, grâce à la façon dont la bibliothèque client Solr est écrite.
Donc, ma question est :
- Peut-on faire en sorte que cURL ouvre une session keepalive ?
- Que faut-il faire pour réutiliser une connexion ? -- est-ce aussi simple que de réutiliser la ressource du handle cURL ?
- Dois-je définir des options cURL particulières ? (par exemple, forcer HTTP 1.1 ?)
- Y a-t-il des problèmes avec les connexions keepalive de cURL ? Ce script fonctionne pendant des heures ; pourrai-je utiliser une seule connexion ou devrai-je me reconnecter périodiquement ?