使用Linux作为长连接的web服务器时,为了增加服务的容量,以及处理性能,需要修改一些参数。

一、多进程绑定CPU

  1、使用taskset命令可以绑定进程到指定CPU,以减少多核CPU环境中,单进程在多个CPU之间却换运行而产生的CPU上下文却换。

  taskset参数:

  -p 指定已存在进程的pid,而不是启动一个进程;同时该命令还返回该进程当前的CPU-list掩码,如:

0x00000001
is processor # 0x00000003
is processors # and # 0xFFFFFFFF
is all processors (# through #)

  -c 指定进程的CPU列表,该列表可以使用逗号分隔,或者区间横线符号,如:0,5,7,9-11.

  taskset -cp 1,2,3 9876  #指定9876进程在1,2,3CPU上运行

  taskset -c 1,2,3 node test.js  #在CPU1,2,3上启动一个进程

  参考:http://yunwei.org/123/ ; http://hi.baidu.com/zhongalin_hust/item/d8a556385c5a2983f5e4ad18

  2、绑定CPU的好处,主要由两点:1)提高CPU缓存的命中率,避免却换执行的CPU导致的缓存换入换出。2)平衡各个CPU之间的负载。

  参考:Nginx的CPU绑定优化:http://blog.csdn.net/wangkun_dhcc/article/details/8713336

  管理处理器的亲和性:http://www.ibm.com/developerworks/cn/linux/l-affinity.html

二、使用nice和renice来修改进程的优先级

  nice,renice分别用于启动时与启动后修改进程的nice值,nice值为正表示优先级降低,为负值表示优先级提高,进程所有者允许降低优先级,但是只有root才可以提高优先级。

  nice参数

  -n val node test.js #启动的时候设置nice值

  renice val pid

三、调整文件描述符限制

  linux中文件描述符有两种:

  一是系统级别的限制(表示所有进程总数量限制):

    修改 /etc/sysctl.conf文件,增加如下两行
fs.file-max = --系统级别所有进程可打开的文件数(ubuntu默认10万)
   fs.nr_open = --定义了file-max允许被修改的最大值,file-max不可以超过该值(ubuntu默认100万)
   使用 /etc/sysctl.conf 后可以使用 sysctl -p 生效 也可以修改如下两个文件,效果一样(/etc/sysctl.conf中得配置,是直接对应到 /proc/sys 目录下面):
/proc/sys/fs/file-max
/proc/sys/fs/nr_open

  二是用户级别的限制(表示系统中的单个用户可打开的文件数):

    修改配置文件:
/etc/security/limits.conf   * soft nofile
  * hard nofile

  修改后可以采用重登陆,或者重启的方式生效。

  另外可以使用ulimia -a的方式来查看 open files 项是否为修改后的值。

  因此在服务端,需要同时修改系统与用户级别的限制,而在测试客户机器中,由于打开的文件数非常有限,因此默认的系统限制已经足够,只需要修改用户级别(默认1024)的限制即可。(ubuntu 默认 file-max大约10万,nr_open大约100万)

四、网络资源修改

修改配置文件 /etc/sysctl.conf ,修改后使用 sysctl -p
  net.core.somaxconn = ---监听队列最大值
  net.core.rmem_default =
  net.core.wmem_default =
  net.core.rmem_max =
  net.core.wmem_max =
  net.core.netdev_max_backlog = ---网络设备接收到的数据,比处理快时,允许保存的最大包数量   net.ipv4.tcp_rmem = ---TCP读缓存大小 最小、默认、最大
  net.ipv4.tcp_wmem =
  net.ipv4.tcp_mem = ---系统TCP内存使用限制,以页为单位
  net.ipv4.tcp_max_syn_backlog = --未建立连接队列,可以增加等待连接建立的TCP数量
  net.ipv4.tcp_fin_timeout = ---主动断开连接,发送FIN后等待对方ACK的时间,默认60秒
  net.ipv4.tcp_tw_reuse = --是否可以使用TIME_WAIT,TCP连接用于建立新连接
  net.ipv4.tcp_tw_recycle = --是否开启带回收TIME——WAIT TCP的功能 ?
  net.ipv4.tcp_max_orphans = --系统允许没有归属的socket数量
  net.ipv4.ip_local_port_range =

  由于服务端需要保持大量的socket链接,因此适当地减低每个socket的缓冲区大小,有利于减少对内存的占用。

  而对于客户端,只需要修改 ip_local_port_range 即可。默认情况下,端口范围为从 32768 - 61000 只有一万多个端口可以使用。

五、判断已启动进程的系统资源限制

  修改了系统限制之后,之后启动的进程将采用新的限制,而已经启动的进程将保持原有的限制。

  当不确定进程的限制时,可以通过查看 /proc/pid/limits 文件来了解主要的资源限制。

Linux服务器核心参数配置的更多相关文章

  1. Yarn 生产环境核心参数配置案例

    目录 Yarn 生产环境核心参数配置案例 需求 修改yarn-site.xml配置 分发 重启集群 执行WordCount程序 Yarn 生产环境核心参数配置案例 调整下列参数之前要拍摄Linux快照 ...

  2. linux服务器基本安全配置手册

    转:忘了在哪转的,直接复制到笔记里了,贴出来分享 假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素.一份正确的linux基本安全配置手册就显得格外重要. ...

  3. linux服务器应用NTP配置时间同步

    linux服务器应用NTP配置时间同步 • 为什么建议使用ntpd而不是ntpdate? #####原因很简单,ntpd是步进式的逐渐调整时间,而ntpdate是断点更新,比如现在服务器时间是9.18 ...

  4. 查看linux系统各种参数配置的命令

    查看linux系统各种参数配置的命令 last |grep shutdown                             //查看上次关机时间 last |grep reboot     ...

  5. Linux 下网卡参数配置

    目录 Linux 下网卡参数配置 第一种:修改 interfaces 文件 网卡配置实例 回环参数配置 DHCP方式配置 静态 IP 地址分配 无线网卡配置 March 17, 2015 7:48 P ...

  6. Linux服务器的初步配置流程

    作者: 阮一峰 日期: 2014年3月14日 开发网站的时候,常常需要自己配置Linux服务器. 本文记录配置Linux服务器的初步流程,也就是系统安装完成后,下一步要做的事情.这主要是我自己的总结和 ...

  7. linux服务器ntp客户端配置【转】

    转自:https://www.cnblogs.com/kerrycode/archive/2015/08/20/4744804.html 在Linux系统中,为了避免主机时间因为在长时间运行下所导致的 ...

  8. nginx的linux服务器内核参数调整【转】

    概述 由于默认的linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,让Nginx可以拥有更高的性能: 在优化内核时,可以做的事情很 ...

  9. 一台Linux服务器(4C8G配置)可以负载百万个连接?

    一台Linux服务器可以负载多少个连接? 首先我们来看如何标识一个TCP连接?系统是通过一个四元组来识别,(src_ip,src_port,dst_ip,dst_port)即源IP.源端口.目标IP. ...

随机推荐

  1. Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践)

     转载:http://www.cnblogs.com/EasonJim/p/6295372.html Jenkins使用FTP进行一键部署及回滚2(Windows)(项目实践) 前提: 这一篇是继上一 ...

  2. 特性(property)

    6.4 特性(property) 1 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 import math class Circle: def ...

  3. 事务传播性、隔离性与MVCC

    一.事务传播性 1.1 什么是事务的传播性 事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务 ...

  4. dedecms导出csv文件

    1.mshd_orderlist.tpl <form id="frm" method="GET" action="mshd_orderlist. ...

  5. [Selenium]点击下拉框之后,从下拉列表选择元素进行点击很容易失败

    点击下拉框之后,下拉列表会显示出来,但是有时候下拉列表会很快就消失掉,导致后面选择元素的时候会失败. 像这种情况,需要将鼠标移动到下拉列表上,使下拉列表维持显示,然后才选择元素进行点击. 将鼠标移动到 ...

  6. Mac完整卸载Android Studio的方法

    1.卸载Android Studio,在终端(terminal)执行以下命令: rm -Rf /Applications/Android\ Studio.app rm -Rf ~/Library/Pr ...

  7. centos环境下输入命令不能有中文那么我怎么插入中文数据到数据库

    centos环境下输入命令不能有中文那么我怎么插入中文数据到数据库 如下图: 首先查看是否安装了中文语言支持组件 yum grouplist 没有的话安装 yum install Chinese Su ...

  8. CodeForces 572D Minimization(DP)

    题意翻译 给定数组AAA 和值kkk ,你可以重排AAA 中的元素,使得∑i=1n−k∣Ai−Ai+k∣\displaystyle\sum_{i=1}^{n-k} |A_i-A_{i+k}|i=1∑n ...

  9. Linux C 网络编程——3. TCP套接口编程

    1. 基本流程 2. socket() int socket(int domain, int type, int protocol); socket()打开一个网络通讯端口,如果成功的话,就像open ...

  10. Tips and Examples Using FNDLOAD (DOC ID 735338.1)

    In this Document Goal Solution Some Tips About FNDLOAD Some sample examples Diagnostics & Utilit ...