线程池优化
admin
2024-02-08 11:20:04

文章目录

  • Socket 连接数足够,但是 并没有全部被用上!!
  • 线程池优化
  • 问题
    • 使用线程池时需要注意

Socket 连接数足够,但是 并没有全部被用上!!

每次 请求过后,TCP 连接 并没有立即被释放,导致 Socket 无法重用

TCP 连接在 经过 四次握手结束连接后并不会立即释放,而是处于 timewait 状态

会 等待一段时间,以 防止 客户端后续的数据未被接收

调整 TCP 连接结束后 等待时间。但是 Linux 并没有提供这一内核参数的调整,如果 要改必须要自己重新编译内核。幸好还有另一个参数

net.ipv4.tcp_max_tw_buckets, timewait 的数量。默认是 180000。我们调整为6000。然后打开 timewait 快速回收和开启重用。

完整的参数优化如下:

# timewait 的数量,默认是 180000。
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 1024 65000# 启用 timewait 快速回收。
net.ipv4.tcp_tw_recycle = 1# 开启重用
# 允许将 TIME-WAIT sockets 重新用于新的 TCP 连接。
net.ipv4.tcp_tw_reuse = 1

线程池优化

计算公式: 每秒 高峰访问次数 * 访问延时 + bufferThread
timeout设为 200ms, 每秒100个请求---->计算结果:100*0.2+10=30 个线程,两台虚拟机 可以解决

如果每秒 访问次数30000怎么办?

30000 * 0.2 + 100 =6100 个线程
6100 / 20 =305 台虚拟机 也可以搞定
虚拟机: 4 个cpu core ,4G内存
物理机 : 十几个cpu core ,几十个G的内存,5~8 个虚拟机,这里 1台物理机=6台虚拟机
305 台虚拟机 = 51 台物理机~搞定

对于线程池大小,一般控制在 10个 左右,20个 以内,最少5个

不同的业务使用不同的线程池,起到线程池隔离!!!

问题

使用线程池时需要注意

子线程的异常,如果 没有被捕获就会丢失 ,可能会 导致后期 根据 日志调试时无法找到原因

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...