1.进程可以打开的文件数(高并发时常用)
ulimit -n
#查看一个进程可以打开的文件数
修改进程可以打开的最大文件数
临时修改:
ulimit -n [进程数]
永久修改:修改限制用户资源配置文件
vim /etc/security/limits.conf
末尾添加
* soft nofile 102400
* hard nofile 102400
----------------------------------------------------------------------------------------------
2.用户可以开启的最大进程数(高并发时常用)
ulimit -u
#查看当前用户可以打开的最大数
修改当前用户可以开启的最大进程数
临时修改:
ulimit -u [进程数]
永久修改:修改限制用户资源配置文件
vim /etc/security/limits.d/90-nproc.conf
末尾添加
* soft nproc 102400
* hard nproc 102400
----------------------------------------------------------------------------------------------
3.查看I/O资源限制
ulimit -a
----------------------------------------------------------------------------------------------
需要C/C++ Linux服务器架构师学习资料加群获取(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享
4.I/O调优范例
--------------------------I/O调优举例-------------------------------------
[root@localhost ~]# yum install -y httpd //安装apache测试
[root@localhost ~]# echo Test > /var/www/html/index.html
[root@localhost ~]# service httpd restart
[root@localhost ~]# ab -n 2000 -c 2000 #http://192.168.1.63/index.html // -n代表每次并发量,-c代表总共发送的数量
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.1.63 (be patient)
socket: Too many open files (24)
超过了限制,我们就无法在打开我们的html这个文件,解决办法:
vim /etc/security/limits.conf //限制用户资源配置文件
* soft nofile 102400 #末尾添加这两行
* hard nofile 102400
#注:soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错。soft一定要比hard小。
#启动系统: reboot ,永久生效的缺点,必须重启系统
reboot
#重启
service httpd restart
ab -n 2000 -c 2000 http://192.168.1.63/index.html
……
Server Software: Apache/2.2.15
Server Hostname: 192.168.1.63
Server Port: 80
Document Path: /index.html
Document Length: 5 bytes
……
----------------------------------------------------------------------------------------------
5.硬盘速度测试
执行读写命令测试硬盘速度
在使用前首先了解两个特殊设备
/dev/null 伪设备,回收站.写该文件不会产生IO开销
/dev/zero 伪设备,会产生空字符流,读该文件不会产生IO开销
[root@localhost ~]# dd if=/dev/zero of=/test.dbf bs=8K count=30000
3000+0 records in
3000+0 records out
24576000 bytes (25 MB) copied, 5.13755 s, 4.8 MB/s
生成25M的一个文件,IO写的速度约为4.8 MB/s
当然这个速度可以多测试几遍取一个平均值,符合概率统计.
用time 命令用于执行后面的命令并计时
[root@localhost ~]# time dd if=/dev/zero of=/test1.dbf bs=8k count=3000
3000+0 records in
3000+0 records out
24576000 bytes (25 MB) copied, 1.04913 s, 23.4 MB/s
real 0m1.061s
user 0m0.002s
sys 0m0.770s
1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间;
2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和。
其中,用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。
另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。
使用hdparm工具测试硬盘速度
hdparm -T -t /dev/sda
-t perform device read timings
#不使用预先的数据缓冲, 标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取,可以理解为读硬盘
-T perform cache read timings
#直接从内存的 cache读取数据的速度。实际上显示出被测系统的处理器缓存和内存的吞吐量,可以理解为读取内存