For example for agent log* keys we have parameters MaxLinesPerSecond, BufferSend and BufferSize, which in general provide ability to control speed and size of bulk messages.
These options exist for purpose.
But if we consider zabbix_sender - there are no any way to control such things if send values as bulk data (-i input file).
It creates serious troubles because of a well know unresolvable limitation of zabbix server - ZBX-9201
It's suggested to add new parameters for sender:
-l --limit <values> If sending many values from an input file, Zabbix sender will batch them at the limit
values in one go (all values will be processed). Default is 250 values
-d --delay <milliseconds> Specify delay in milliseconds between values sending in batches when send from input file
Default is no delay
-l replaces hardcoded 250 to configurable parameter
Example usage:
# time ./zabbix_sender -z localhost -i /tmp/aaa info from server: "processed: 3; failed: 0; total: 3; seconds spent: 0.000088" sent: 3; skipped: 0; total: 3 real 0m0.003s user 0m0.000s sys 0m0.000s # time ./zabbix_sender -z localhost -i /tmp/aaa -l 1 info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000090" info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000036" info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000031" sent: 3; skipped: 0; total: 3 real 0m0.007s user 0m0.004s sys 0m0.000s # time ./zabbix_sender -z localhost -i /tmp/aaa -l 1 -d 500 info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000031" info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000047" info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000089" sent: 3; skipped: 0; total: 3 real 0m1.507s user 0m0.000s sys 0m0.000s
Suggested patch adds such features.