Comme je l’avais évoqué dans un billet précédent, le nouveau build de développement d’hbIRCS intègre une fonctionnalité majeure : le support des connexions sécurisées SSL/TLS. Le reste du travail a porté sur la réécriture du code existant avec comme objectif l’optimisation du temps d’exécution des cycles lecture/écriture, des algorithmes de parsing et un allocation optimisées des buffers.

hbIRCS-0.2.0-UNSTABLE-20090726
– support des connexions sécurisées SSL/TLS.
– optimisation de la gestion des buffers : allocation par pool, support des vues et des buffers systèmes.
– optimisation des algorithmes I/O : cycles de lecture/décodage/process et encodage/écriture.
– optimisation d’exécution des tâches planifiées.
– tuning des paramètres Listener, Connection, SSLEngine, AcceptExecutor/ReadExecutor & ThreadPool.
– fix bug commandes RESTART & DIE.
– fix bug socket bind.

Voici l’ensemble des options de configuration d’un écouteur réseau  :

<Listener>
   ListenAddress ::1
   ListenPort 9999
   ListenBackLog 128

   MaxConnections 256
   ACL local_client

   <Connection>
      UseSSLEngine true
      <SSLEngine>
         KeyStoreFile ./hbircs.keystore
         KeyStorePassword "my$ecret"
      </SSLEngine>
      ReadBufferSize 4096
      WriteBufferSize 4096
      UseDirectBuffers true
      UseBufferFactory true
      WriteRetryAttempts 2
      WriteRetryTimeout 250
   </Connection>

   <AcceptExecutor>
      SelectorTimeout 0
      QueueTaskSize 64
      TaskRecycle true        
      UseThreadPool true
      <ThreadPool>
         MaxTasks 64
         MinThreads 1
         MaxThreads 4
         ThreadIncrement 1
         ThreadPriority 5
         ThreadTimeout 60000
      </ThreadPool>        
   </AcceptExecutor>

   <ReadExecutor>
      Executors 1
      SelectorTimeout 0
      QueueTaskSize 1024
      TaskRecycle true        
      UseThreadPool true
      <ThreadPool>
         MaxTasks -1
         MinThreads 4
         MaxThreads 16
         ThreadIncrement 2
         ThreadPriority 5
         ThreadTimeout 60000
      </ThreadPool>
   </ReadExecutor>
</Listener>