vim /etc/sysctl.conf
net.core.somaxconn=32768
kernel.thread-max=196605
kernel.pid_max=196605
vm.max_map_count=393210
网络、内核、进程能拥有的最多内存区域
max_map_count 文件包含限制一个进程可以拥有的 VMA(虚拟内存区域)的数量
虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,
每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,
这些区域将被创建。调优这个值将限制进程可拥有 VMA 的数量。限制一个进
程拥有 VMA 的总数可能导致应用程序出错,因为当进程达到了 VMA 上线但
又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的
错误。如果你的操作系统在 NORMAL 区域仅占用少量的内存,那么调低这个
值可以帮助释放内存给内核用。
net.core.somaxconn 是 Linux 中的一个 kernel 参数,表示 socket 监听(listen)的 backlog 上限
什么是 backlog 呢?backlog 就是 socket 的监
听队列,当一个请求(request)尚未被处理或建立时,它会进入 backlog。
而 socket server 可以一次性处理 backlog 中的所有请求,处理后的请求不再
位于监听队列中。当 server 处理请求较慢,以至于监听队列被填满后,新来的
请求会被拒绝