好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受。
目录
一、概述
一般来说,考量一个系统的性能主要看这两个指标。而这两个指标之间又存在着一些联系:对于指定的系统来说,系统的吞吐量越大,处理的请求越多,服务器就越繁忙,响应速度就会慢下来;而延迟越低的系统,能够承载的吞吐量也相应的更高一些。一方面,我们需要提高系统的吞吐量,以便服务更多的用户,另一方面我们需要将延迟控制在合理的范围内,以保证服务质量。
衡量指标
-
吞吐量(Throughput) 系统单位时间内处理任务的数量
-
延迟(Latency) 系统对单个任务的平均响应时间
入正题,那么如何通过调试服务器的参数,来实现系统高吞吐,低延迟呐 ?
二、服务器参数调优
1.修改文件进程数
编辑文件/etc/sysctl.conf,系统进程所能打开的文件个数和单个进程所能打开的文件个数设置
#它是系统单个进程一共可以打开的文件数量,具体数值可以根据情况设置,默认值是:1024*1024 = 1048576
fs.nr_open = 1048576
#它是系统所有进程一共可以打开的文件数量,它是系统级别的,因此应该尽量将它调的大一些,这里将它修改为单个进程的100倍,这个已经非常大了
fs.file-max = 104857600
重点:file-max是对所有进程(all processes)的限制,而nr_open是对单个进程(a process)的限制
2.系统对该用户访问资源限制
修改 /etc/pam.d/login 文件,在文件中添加如下信息:
session required /lib/security/pam_limits.so
描述:这是告诉Linux在用户完成系统登录后,应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),而pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值。修改完后保存此文件
3.用户打开文件数的软限制和硬限制
辑文件/etc/security/limits.conf,/etc/sysctl.conf,添加用户打开文件个数:
* hard nofile 65535
* soft nofile 65535
讲解:'*'号表示修改所有用户的限制;hard意为硬资源限制:一旦被superuser设置后不能增加;soft为软资源设置:设置后在程序运行期间可以增加,但不能超过hard的限制。程序读取的是soft,它是一个告警值。 nofile意为用户打开最大文件描述符数量,在Linux下运行的网络服务器程序,每个tcp连接都要占用一个文件描述符,一旦文件描述符耗尽,新的连接到来就会返回"Too many open files"这样的错误,为了提高并发数,需要提高这项配置的数值。
注意:nofile 的值一定不能高于 nr_open ,否则用户ssh登录不了系统,所以操作时务必小心
4.内核TCP参数方面
Linux系统下,TCP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以优