一、 ulimit资源限制
限制用户资源配置文件:/etc/security/limits.conf
[root@xucccc ~]# vim /etc/security/limits.conf
每行的格式:用户名/@用户组名 类型(软限制/硬限制) 选项 值
1、永久修改一个进程可以打开的最大文件数
[root@xucccc ~]# vim /etc/security/limits.conf #在文件的最后追加以下内容
* soft nofile 1024000
* hard nofile 1024000
注:soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错。一般把soft和hard都配置成一样的值。 最大打开的文件数以文件描叙符file descripter计数)。
2、启动系统
[root@xucccc ~]# ulimit -n #查看一个进程可以打开的文件数,默认是1024
1024
[root@xucccc ~]# reboot #想要刚修改的limits.conf中配置永久生效,必须重启系统
3、系统重启成功后,登录系统上检查:
[root@xucccc ~]# ulimit -n
1024000
方法二:#临时修改
[root@xucccc ~]# ulimit -n 10000 #不用重启系统。
[root@xucccc ~]# ulimit -n
10000
例2:nproc #配置一个用户可以打开的最大进程数
[root@xucccc ~]# vim /etc/security/limits.d/20-nproc.conf
改:
5 * soft nproc 4096
为:
5 * soft nproc 65535
6 * hard nproc 65535
[root@xucccc ~]# ulimit -u #重启前先查看一下,默认是31789。
31789
[root@xucccc ~]# reboot #重启一下。
[root@xucccc ~]# ulimit -u
65535
或:
再打一个终端,直接查看
[root@xucccc ~]# ulimit -u
66666
临时修改:
[root@xucccc ~]# ulimit -u 60000
[root@xucccc ~]# ulimit -u
60000
注:如果默认一个用户可用的最大进程数是1024.那么apache用户启动的进程就数就不能大于1024了。
二、查看所有的资源限制信息
[root@ xuccc ~]# ulimit -a
core file size (blocks, -c) 0 kdump转储功能打开后产生的core file大小限制
data seg size (kbytes, -d) unlimited 数据段大小限制
scheduling priority (-e) 0
file size (blocks, -f) unlimited 文件大小限制
pending signals (-i) 27955
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024 打开的文件个数限制
pipe size (512 bytes, -p) 8 管道大小的限制
POSIX message queues (bytes, -q) 819200 消息队列大小
real-time priority (-r) 0
stack size (kbytes, -s) 10240 栈大小
cpu time (seconds, -t) unlimited CPU时间使用限制
max user processes (-u) 27955 最大的用户进程数限制
virtual memory (kbytes, -v) unlimited 虚拟内存限制
file locks (-x) unlimited
三、 测试硬盘速度
一般情况下使用hdparm来测试磁盘顺序读的速度。dd命令用来测试磁盘顺序写的速度。
1、hdparm命令常用参数
参数:
-t perform device read timings #不使用预先的数据缓冲, 标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取. perform [pəˈfɔ:m] #执行
--direct Use O_DIRECT to bypass page cache for timings #直接绕过缓存进行统计数据
2、测试硬盘读速度
[root@xucccc ~]# hdparm -t --direct /dev/sda
/dev/sda:
Timing O_DIRECT disk reads: 258 MB in 3.02 seconds = 85.32 MB/sec
注: 弹出的含意是3.02秒中从硬盘缓存中读258M,平均每秒读85.32MB。Timing [ˈtaɪmɪŋ] 计时,
3、使用dd命令测试磁盘IO的顺序写和读速度
在使用前首先了解两个特殊设备:/dev/null 伪设备,回收站.写该文件不会产生IO开销;/dev/zero 伪设备,会产生空字符流,读该文件不会产生IO开销
4、使用dd测试磁盘的IO顺序写速度
[root@xucccc ~]# dd if=/dev/zero of=/test.dbf bs=1M count=2000 oflag=direct,nonblock
记录了2000+0 的读入
记录了2000+0 的写出
2097152000字节(2.1 GB)已复制,46.335 秒,45.3 MB/秒
注:可以看到,在46.335 秒的时间里,生成2000M的一个文件,IO写的速度约为45.3 MB/秒,这就是我的硬盘顺序写速度了。当然这个速度可以多测试几遍取一个平均值。
注:oflag=direct,nonblock 中的direct表示读写数据采用直接IO方式;nonblock表示读写数据采用非阻塞IO方式,这样绕开缓存,测试的更准确。
总结:在生产环境下,建议使用hdparm来测试磁盘读,使用dd来测试磁盘写速度
四、 time命令测试进程运行时间
time 命令: 执行命令并计时
例1: 测试dd 命令使用时间和开销
[root@xucccc ~]# time dd if=/dev/zero of=/test.dbf bs=1M count=200
记录了200+0 的读入
记录了200+0 的写出
209715200字节(210 MB)已复制,3.79592 秒,55.2 MB/秒
real 0m4.225s
user 0m0.002s
sys 0m2.624s
注释:
1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间;
2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;
3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和。
其中,用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。排队时间没有算在里面。
另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。