emqx优化

前置:

测试版本为emqx 开源版5.8.6;

 

优化:

1. 调整服务器文件描述符,

ulimit -SHn 300000
sed -i s/65535/300000/g /etc/security/limits.conf
ulimit -n

2. 调整emqx服务端配置

node {
  max_ports = 2097152
  dist_buffer_size = 2097151
}

force_shutdown {
      enable  =  true
      max_message_queue_len = 200000
      max_heap_size = 256MB
}

log {
  file {
    enable = true
    level = warning
    path="/data/emqx-logs/emqx.log"
    rotation_count = 20
    rotation_size = 400MB
    time_offset = system
    timestamp_format = auto
  }
}

durable_sessions {
  enable = false
}

isteners {
  tcp {
    default {
      acceptors = 16
      max_connections = 1024000
      max_conn_rate = 10000
    }
  }
}

mqtt {
  max_inflight = 256
  max_mqueue_len = 20000
  mqueue_store_qos0 = false
  max_packet_size = "1MB"
  max_topic_alias = 10
}

session {
  expiry_interval = "2h"
  max_subscriptions = 100000
  upgrade_qos = false
}

slow_subs {
  enable = true
  threshold = "100ms"
  stats_type = "whole"
}

force_gc_policy = true
persistent_session_queue_purge_interval = "5s"

3. 前两步调整后,压测时发现仍会出现进程单核cpu90%+,但服务器整体cpu、内存还有很大空间;因此调整vm参数:

## 普通调度器:总数=在线数=8
+S 8:8

## 脏CPU调度器:通常与普通调度器数量相同或略少,8是稳妥选择
+SDcpu 8

## 脏IO调度器:通常无需太多,4即可
+SDio 4

## 调度器绑定策略:使用更激进的线程级全局绑定,缓解单核瓶颈
+sbt db

## 调度器唤醒策略:低延迟模式
+swt very_low

 

posted @ 2026-06-10 14:49  liubilan  阅读(15)  评论(0)    收藏  举报