本文大纲

《如何做性能测试》

服务端的优化

准备测试环境

在性能测试时, Linux服务端,常见的优化点有:最大打开文件数 和 最大进程数。十分建议你优化它。

在Linux服务器上调整最大打开文件数和最大进程数对于确保系统在高并发和高负载情况下的稳定性和资源利用效率至关重要。通过合理配置这些参数,可以提高性能测试的准确性和可靠性,从而帮助团队更好地评估系统的健壮性并及时进行优化。

优化的意义

最大打开文件数对性能测试的重要性:

  • 高并发场景下的支持能力 : 当系统需要处理大量并发连接时,每个连接都可能涉及多个文件描述符。如果未适当调整此限制值,可能会导致“Too many open files”错误。
  • 资源利用效率 : 增加最大打开文件数可以确保应用在高峰期能够充分利用所有可用的文件句柄资源,从而避免因文件句柄不足而出现瓶颈。

调整最大进程数的重要性:

  • 系统中的每个服务和应用程序运行时都会占用一定的进程数量。当性能测试需要模拟大规模并发请求或高负载情况时,适当调整系统的最大进程数是必要的。

有哪些限制

有3个可限制的点位

  1. Linux限制最大进程数–用户级
  2. Linux限制最大打开文件数–系统级
  3. Linux限制最大打开文件数–进程级(用户的进程)

2个种类:硬限制和软限制

  1. hard是:硬限制(hard limit),硬限制(hard limit)一旦被设置以后就不能被非root用户修改。
  2. soft是:软限制(soft limit),软限制(soft limit)可以增长达到硬限制(hard limit)。

一、Linux限制最大进程数–用户级

1、查看当前每一个用户创建的进程数,并排序

$ ps h -Led -o user | sort | uniq -c | sort -nr

image2021-6-26_19-59-56.png

2、用户级最大进程数

限制用户进程的数量对于linux系统的稳定性非常重要。

linux资源限制配置文件是/etc/security/limits.conf;limits.conf文件限制用户可以使用的最大文件数,最在进程,内存、CPU、磁盘空间 等资源使用量。

nproc  是限制进程数的。nproc - max number of processes 进程的最大数目
* soft nofile 65535  # * 表示任何用户,soft是软限制,任何用户的进程可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接数
* hard nofile 65535  # * 表示任何用户,hard是硬限制,任何用户的进程可以打开的最大的文件描述符数量。
* soft nproc  65535  # * 表示任何用户,soft是软限制,可以创建的最大进程数。
* hard nproc  65535  # * 表示任何用户,hard是硬限制,可以创建的最大进程数。

@student soft nofile 4096  #student学生组中的用户,soft是软限制,此用户的进程可以打开的最大的文件描述符数量。
@student hard nofile 65535  #student学生组中的用户,hard是硬限制,此用户的进程可以打开的最大的文件描述符数量。
@student soft nproc 30  #student学生组中的用户,soft是软限制,可以创建的最大进程数。
@student hard nproc 50  #student学生组中的用户,hard是硬限制,可以创建的最大进程数。
*  表示任何用户
@student 表示student学生组

hard是:硬限制(hard limit),硬限制(hard limit)一旦被设置以后就不能被非root用户修改。

soft是:软限制(soft limit),软限制(soft limit)可以增长达到硬限制(hard limit)。

二、Linux限制最大打开文件数–系统级

1、查看当前系统级已使用的打开文件描述符数

$ cat /proc/sys/fs/file-nr

image2021-6-26_20-13-42.png

其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。

2、查看系统级最大打开文件描述符数

$ cat /proc/sys/fs/file-max

6553600

意义:所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max

3、设置系统级最大打开文件描述符数

$ vim /etc/sysctl.conf

在最后面加入这段内容: fs.file-max = 6553600

三、Linux限制最大打开文件数–进程级

1、查看ulimit的soft limit

ulimit -n默认查看的是soft limit
$ ulimit -n
170000

2、查看ulimit的hard limit

$ ulimit -Hn
170000

3、设置–临时设置

#通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit必须小于hard limit
$ ulimit -Sn 160000

#同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。
$ ulimit -n 180000

4、设置–永久设置

linux资源限制配置文件是/etc/security/limits.conf;limits.conf文件限制用户可以使用的最大文件数,最在进程,内存、CPU、磁盘空间 等资源使用量。

#root权限下,在/etc/security/limits.conf中添加如下两行,表示所有用户最大打开文件描述符数的soft limit为102400,hard limit为104800。重启生效。
* soft nofile 102400
* hard nofile 104800

单个进程打开的文件描述符数不能超过user limit中nofile的soft limit。

注意:设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open (值是1048576),假如hard limit大于1048576,注销后将无法正常登录。

nofile 是限制打开文件数的。nofile - max number of open file descriptors 最大打开的文件数(以文件描叙符,file descripter计数)
* soft nofile 65535  # * 表示任何用户,soft是软限制,任何用户的进程可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接数
* hard nofile 65535  # * 表示任何用户,hard是硬限制,任何用户的进程可以打开的最大的文件描述符数量。
* soft nproc  65535  # * 表示任何用户,soft是软限制,可以创建的最大进程数。
* hard nproc  65535  # * 表示任何用户,hard是硬限制,可以创建的最大进程数。

@student soft nofile 4096  #student学生组中的用户,soft是软限制,此用户的进程可以打开的最大的文件描述符数量。
@student hard nofile 65535  #student学生组中的用户,hard是硬限制,此用户的进程可以打开的最大的文件描述符数量。
@student soft nproc 30  #student学生组中的用户,soft是软限制,可以创建的最大进程数。
@student hard nproc 50  #student学生组中的用户,hard是硬限制,可以创建的最大进程数。

5、查看某个进程已经打开的文件数

 ps -ef|grep mongodb   查看到mongodb进程的PID是28475

cat /proc/28475/limits   查看进程PID是28475的进程的限制信息

cat /proc/28475/limits |grep “files”    看到Max open files是65535

ll /proc/28475/fd |wc -l    统计已打开的文件数是280

image2021-6-26_21-16-23.png