Linux服务器性能调优之I/O调优详解

linux大本营 · · 399 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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服务器架构师学习资料加qun(563998835)(资料包括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.<$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读取数据的速度。实际上显示出被测系统的处理器缓存和内存的吞吐量,可以理解为读取内存


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:linux大本营

查看原文:Linux服务器性能调优之I/O调优详解

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

399 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传