mac下undertow线程设置
springboot中undertow的线程设置如下:
server:
undertow:
threads:
worker: xx
io: xx
其io线程为当前cpu线程数:如以下为12线程:
默认worker线程数为:cpu线程数X8 ,在本机应该为12 * 8 = 96.
问题
在mac下发现线程数超过300无效,测试流程如下
设置worker线程为200时:生效
worker线程数设置为250:生效
worker线程数设置为300:不生效,最多只到260
分析
1. 修改worker线程数为400,发现还是维护在250左右,始终上不去
2. 初步怀疑并发数不够,提高并发数,发现基本无提升。
3. 其资源占用都不高,因此不是资源问题
4. 然后怀疑是由于mac下文件打开数限制导致,查看发现默认当前打开文件数只为256,
(base) ➜ ~ ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-v: address space (kbytes) unlimited
-l: locked-in-memory size (kbytes) unlimited
-u: processes 5568
-n: file descriptors 256
直接修改为5000,重启发现生效。如图