Нагрузочный тест XMPP с использованием Smack Client API - PullRequest
0 голосов
/ 29 мая 2018

Я хочу измерить емкость сервера XMPP с помощью теста загрузки XMPP.Поэтому я реализовал Load Tester и использовал Smack Client API для обработки соединений.

Но я обнаружил, что это было очень дорого, потому что для каждого соединения создано три потока (SmackExecutor, Reader и Writter).

Поэтому я не могу открыть более 10K-соединений на сильной машине, хотя увеличенные ограничения ОС на компьютере, такие как ограничитель файлов, ..

Посоветуете ли вы инструмент или способ реализации для обработки более 20К-соединений наодна машина.

]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 513395
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 524288
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 262144
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

enter image description here

[! [введите описание изображения здесь] [2]] [2]

Зависимость:

<dependency>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smack</artifactId>
    <version>4.0.4</version>
</dependency>
<dependency>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smackx</artifactId>
    <version>4.0.4</version>
</dependency>
<dependency>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smack-debug</artifactId>
    <version>4.0.4</version>
</dependency>
<dependency>
    <groupId>org.igniterealtime.smack</groupId>
    <artifactId>smack-tcp</artifactId>
    <version>4.0.4</version>
</dependency>

1 Ответ

0 голосов
/ 02 июня 2018

Есть несколько мнений по моему вопросу на сайте https://discourse.igniterealtime.org/t/maximum-concurrent-users-possible-with-smack/72868/5

    Smack was not designed to create 10.000s of connections within 
the same JVM (of course having multiple XMPPConnection within the same JVM is fine). 
I would recommend using a more lightweight XMPP library written in C or in Lua for stress testing.


    You could also use multiple JVM processes, but still, the overhead caused by the threads 
Smack uses per connection make it not the ideal library for stress testing.
...