Je frappe aussi un mur de briques d'environ 1 million d'enregistrements par fragment (en partitionnant du côté client, rien d'extraordinaire). J'ai essayé différentes options de ttserver et ils semblaient ne faire aucune différence, donc je regardais du côté du noyau et a constaté que
echo 80 > /proc/sys/vm/dirty_ratio
(valeur précédente était de 10) a donné une grande amélioration - ce qui suit est la taille totale de les données (sur 8 tessons, chacun sur son propre noeud) imprimé chaque minute:
total: 14238792 records, 27.5881 GB size
total: 14263546 records, 27.6415 GB size
total: 14288997 records, 27.6824 GB size
total: 14309739 records, 27.7144 GB size
total: 14323563 records, 27.7438 GB size
(here I changed the dirty_ratio setting for all shards)
total: 14394007 records, 27.8996 GB size
total: 14486489 records, 28.0758 GB size
total: 14571409 records, 28.2898 GB size
total: 14663636 records, 28.4929 GB size
total: 14802109 records, 28.7366 GB size
vous pouvez donc voir que l'amélioration était de l'ordre de 7-8 fois. La taille de la base de données était d'environ 4,5 Go par nœud à ce moment (y compris les index) et les nœuds ont 8 Go de RAM (donc dirty_ratio de 10 signifiait que le noyau essayait de garder moins de 800 Mo de poussière).
La prochaine chose que je vais essayer est ext2 (actuellement: ext3) et noatime et aussi tout garder sur un disque virtuel (ce qui gaspillerait probablement deux fois la quantité de mémoire, mais pourrait en valoir la peine).