Tim wrote:
I've, so far, been making use of home grown python-ldap3 scripts to simulate the various kinds of interactions using many parallel synchronous requests - but as I scale this up, I'm increasingly aware that it is a very different ask to simulate simple synchronous interactions compared to a fully optimised multithreaded client with dedicated async/sync channels and associated strategies.
Most clients will just send those synchronous requests. So IMHO this is the right test pattern and you should simply make your test client multi-threaded.
I'm currently working with a dataset of in the region of 2,500,000 objects and looking to test throughput up to somewhere in the region of 15k/s searches alongside 1k/s modification/addition events - which is beyond what the current basic scripts are able to achieve.
Note that the ldap3 module for Python is written in pure Python - also the ASN.1 encoding/decoding stuff. In opposite to that the old Python 2.x https://python-ldap.org module is a C wrapper module around the OpenLDAP libs and therefore you might get a better client performance. Nevertheless you should spread your test clients over several machines to really achieve the needed performance.
Ciao, Michael.