Linux /proc优化
[ 2009/09/04 14:29 | by selboo ]
一、/proc/sys/kernel/优化
1) /proc/sys/kernel/ctrl-alt-del
该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应.这两个值分别是:
零(0)值,表示捕获ctrl+alt+delete,并将其送至 init 程序;这将允许系统可以安全地关闭和重启,就好象输入shutdown命令一样.
壹(1)值,表示不捕获ctrl+alt+delete,将执行非正常的关闭,就好象直接关闭电源一样.
缺省设置:0
建议设置:1,防止意外按下ctrl+alt+delete导致系统非正常重启.
2) proc/sys/kernel/msgmax
该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes).进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量.
缺省设置:8192
3) /proc/sys/kernel/msgmnb
该文件指定一个消息队列的最大长度(bytes).
缺省设置:16384
4) /proc/sys/kernel/msgmni
该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列.
缺省设置:16
5) /proc/sys/kernel/panic
该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位).
零(0)秒,表示在发生内核严重错误时将禁止自动重新引导.
缺省设置:0
6) proc/sys/kernel/shmall
该文件表示在任何给定时刻,系统上可以使用的共享内存的总量(bytes).
缺省设置:2097152
7) /proc/sys/kernel/shmmax
该文件表示内核所允许的最大共享内存段的大小(bytes).
缺省设置:33554432
建议设置:物理内存 * 50%
实际可用最大共享内存段大小=shmmax * 98%,其中大约2%用于共享内存结构.
可以通过设置shmmax,然后执行ipcs -l来验证.
8) /proc/sys/kernel/shmmni
该文件表示用于整个系统的共享内存段的最大数目(个).
缺省设置:4096
9) /proc/sys/kernel/threads-max
该文件表示内核所能使用的线程的最大数目.
缺省设置:2048
10) /proc/sys/kernel/sem
该文件用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法.
建议设置:250 32000 100 128
第一列,表示每个信号集中的最大信号量数目.
第二列,表示系统范围内的最大信号量总数目.
第三列,表示每个信号发生时的最大系统操作数目.
第四列,表示系统范围内的最大信号集总数目.
所以,(第一列)*(第四列)=(第二列)
以上设置,可以通过执行ipcs -l来验证.
11) 待续...
1) /proc/sys/kernel/ctrl-alt-del
该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应.这两个值分别是:
零(0)值,表示捕获ctrl+alt+delete,并将其送至 init 程序;这将允许系统可以安全地关闭和重启,就好象输入shutdown命令一样.
壹(1)值,表示不捕获ctrl+alt+delete,将执行非正常的关闭,就好象直接关闭电源一样.
缺省设置:0
建议设置:1,防止意外按下ctrl+alt+delete导致系统非正常重启.
2) proc/sys/kernel/msgmax
该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes).进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量.
缺省设置:8192
3) /proc/sys/kernel/msgmnb
该文件指定一个消息队列的最大长度(bytes).
缺省设置:16384
4) /proc/sys/kernel/msgmni
该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列.
缺省设置:16
5) /proc/sys/kernel/panic
该文件表示如果发生“内核严重错误(kernel panic)”,则内核在重新引导之前等待的时间(以秒为单位).
零(0)秒,表示在发生内核严重错误时将禁止自动重新引导.
缺省设置:0
6) proc/sys/kernel/shmall
该文件表示在任何给定时刻,系统上可以使用的共享内存的总量(bytes).
缺省设置:2097152
7) /proc/sys/kernel/shmmax
该文件表示内核所允许的最大共享内存段的大小(bytes).
缺省设置:33554432
建议设置:物理内存 * 50%
实际可用最大共享内存段大小=shmmax * 98%,其中大约2%用于共享内存结构.
可以通过设置shmmax,然后执行ipcs -l来验证.
8) /proc/sys/kernel/shmmni
该文件表示用于整个系统的共享内存段的最大数目(个).
缺省设置:4096
9) /proc/sys/kernel/threads-max
该文件表示内核所能使用的线程的最大数目.
缺省设置:2048
10) /proc/sys/kernel/sem
该文件用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法.
建议设置:250 32000 100 128
第一列,表示每个信号集中的最大信号量数目.
第二列,表示系统范围内的最大信号量总数目.
第三列,表示每个信号发生时的最大系统操作数目.
第四列,表示系统范围内的最大信号集总数目.
所以,(第一列)*(第四列)=(第二列)
以上设置,可以通过执行ipcs -l来验证.
11) 待续...
df和du显示空间为何不一致
[ 2009/07/30 12:02 | by selboo ]
有台机器空间老是显示满,df显示已经使用了100%,可用du命令却没见占用很多空间,后来终于在网上查到了原因所在:
造成这个现象的原因是有进程仍然打开着已经被删除的文件。因为该文件已经不存在于文件目录树上,所以du遍历整个文件系统中不会统计其所占用的空间,可是,这个文件又还不能被从磁盘上删除,所以确实还占用了一部分磁盘空间。
可以用lsof来确定究竟是哪个进程搞的鬼,比如:
上面这个例子显示tail(pid为31818)进程打开了一个已经被删除的文件(/var/spool/clientmqueue/dfm9TAh6du031818 ),这个文件大小为457053。此时,如果终止这个进程,那么这457053多字节就会正常释放,df的输出也就和du一致了。
曾经遇到过此类问题的报告,似乎杀了sendmail就好了。当时不知原由,现在想来,可能是系统长时间运行后sendmail的日志经过了rotate,而sendmail仍然打开着旧的日志文件。
以后再遇到此类情况,直接用lsof命令,查看是哪些进程占用着已删除文件,就可相机处理了。
造成这个现象的原因是有进程仍然打开着已经被删除的文件。因为该文件已经不存在于文件目录树上,所以du遍历整个文件系统中不会统计其所占用的空间,可是,这个文件又还不能被从磁盘上删除,所以确实还占用了一部分磁盘空间。
可以用lsof来确定究竟是哪个进程搞的鬼,比如:
# lsof | grep deleted
sendmail 31818 hsq 3uW REG 8,5 194523136 457053 /var/spool/clientmqueue/dfm9TAh6du031818 (deleted)
sendmail 31818 hsq 3uW REG 8,5 194523136 457053 /var/spool/clientmqueue/dfm9TAh6du031818 (deleted)
上面这个例子显示tail(pid为31818)进程打开了一个已经被删除的文件(/var/spool/clientmqueue/dfm9TAh6du031818 ),这个文件大小为457053。此时,如果终止这个进程,那么这457053多字节就会正常释放,df的输出也就和du一致了。
曾经遇到过此类问题的报告,似乎杀了sendmail就好了。当时不知原由,现在想来,可能是系统长时间运行后sendmail的日志经过了rotate,而sendmail仍然打开着旧的日志文件。
以后再遇到此类情况,直接用lsof命令,查看是哪些进程占用着已删除文件,就可相机处理了。
linux 查看硬盘性能
[ 2009/07/17 10:11 | by selboo ]
hdparm -t /dev/sda
hdparm -Tt /dev/sda
-a 表示是否关闭磁盘预读取功能。对于大文件读取,这个显然能提高性能。
-A设置硬盘驱动器缓存读取特性。可能就是硬盘缓存开关
--d设置dma
使用DMA和32位传输可以大幅提升系统性能。使用命令如下:
# /sbin/hdparm -c 1 /dev/hda
此命令将第一个IDE硬盘的PCI总线指定为32位,使用 -c 0参数来禁用32位传输。
在硬盘上使用DMA,使用命令:
# /sbin/hdparm -d 1 /dev/hda
关闭DMA可以使用 -d 0的参数。
更改完成后,可以使用hdparm来检查修改后的结果,使用命令:
# /sbin/hdparm -t /dev/had
为了确保设置的结果不变,使用命令:# /sbin/hdparm -k 1 /dev/hda
Hdparm命令的一些常用的其他参数功能
-g 显示硬盘的磁轨,磁头,磁区等参数。
-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-I 直接读取硬盘所提供的硬件规格信息。
-p 设定硬盘的PIO模式。
-Tt 评估硬盘的读取效率和硬盘快取的读取效率。
-u <0或1>; 在硬盘存取时,允许其他中断要求同时执行。
-v 显示硬盘的相关设定。
ps:
简单测试硬盘的写入速度
dd if=/dev/zero of=file bs=1024 count=10240
hdparm -Tt /dev/sda
-a 表示是否关闭磁盘预读取功能。对于大文件读取,这个显然能提高性能。
-A设置硬盘驱动器缓存读取特性。可能就是硬盘缓存开关
--d设置dma
使用DMA和32位传输可以大幅提升系统性能。使用命令如下:
# /sbin/hdparm -c 1 /dev/hda
此命令将第一个IDE硬盘的PCI总线指定为32位,使用 -c 0参数来禁用32位传输。
在硬盘上使用DMA,使用命令:
# /sbin/hdparm -d 1 /dev/hda
关闭DMA可以使用 -d 0的参数。
更改完成后,可以使用hdparm来检查修改后的结果,使用命令:
# /sbin/hdparm -t /dev/had
为了确保设置的结果不变,使用命令:# /sbin/hdparm -k 1 /dev/hda
Hdparm命令的一些常用的其他参数功能
-g 显示硬盘的磁轨,磁头,磁区等参数。
-i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-I 直接读取硬盘所提供的硬件规格信息。
-p 设定硬盘的PIO模式。
-Tt 评估硬盘的读取效率和硬盘快取的读取效率。
-u <0或1>; 在硬盘存取时,允许其他中断要求同时执行。
-v 显示硬盘的相关设定。
ps:
简单测试硬盘的写入速度
dd if=/dev/zero of=file bs=1024 count=10240
make[1]: *** [mod_jk.lo] Error 1
[ 2009/03/31 21:00 | by selboo ]
在配置apache+tomcat时
安装jk连接器
cd /opt/tomcat/tomcat-connectors-1.2.28-src/native
./configure --with-apxs=/usr/local/apache-2.2.11/bin/apxs --with-java-home=/usr/local/jdk
make && make install
报错了
make[1]: *** [mod_jk.lo] Error 1
经过N百度 Google 终于解决了是因为编译apache忘记增加 --enable-so 参数
重新编译下apache
问题解决了
安装jk连接器
cd /opt/tomcat/tomcat-connectors-1.2.28-src/native
./configure --with-apxs=/usr/local/apache-2.2.11/bin/apxs --with-java-home=/usr/local/jdk
make && make install
报错了
make[1]: *** [mod_jk.lo] Error 1
经过N百度 Google 终于解决了是因为编译apache忘记增加 --enable-so 参数
重新编译下apache
问题解决了