海运的博客

Nginx编译安装more_set_headers模块自定义head头信息

发布时间:May 9, 2012 // 分类:Nginx // No Comments

通过服务器的head头可以得到服务器的很多信息,这给服务器安全带来很大隐患,如:

curl -I https://www.haiyun.me
HTTP/1.1 301 Moved Permanently
Server: nginx/1.0.15
Date: Fri, 10 Feb 2012 10:43:42 GMT
Content-Type: text/html
Connection: keep-alive
X-Powered-By: PHP/5.2.17p1
location: forum.php

Nginx可以编译添加第三方模块more_set_headers来自定义或清除相关head信息。

cd /usr/local/src/
wget http://nginx.org/download/nginx-1.0.15.tar.gz
tar zxvf nginx-1.0.15.tar.gz
cd nginx-1.0.15
wget -O header.zip --no-check-certificate https://github.com/agentzh/headers-more-nginx-module/zipball/v0.17rc1
unzip header.zip 
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-\
http_ssl_module --with-http_gzip_static_module --add-module=./agentzh-headers-more-nginx-module-3580526/
make && make install

应用示例,清除服务器及php信息,在配置文件http段添加以下:

more_clear_headers "X-Powered-By:";
more_clear_headers "Server:";

重新加载配置文件:

/etc/init.d/nginx reload

查看当前head头信息:

curl -I https://www.haiyun.me
HTTP/1.1 301 Moved Permanently
Date: Fri, 10 Feb 2012 10:58:38 GMT
Content-Type: text/html
Connection: keep-alive
location: forum.php

现在nginx及php信息都没了,当然也可自定义为其它信息。

Linux/Centos修改最大文件数限制

发布时间:May 7, 2012 // 分类:系统调优 // No Comments

查看系统最大文件数限制:

cat /proc/sys/fs/file-max 

查看系统当前已打开的文件数:

cat /proc/sys/fs/file-nr 

调整系统最大文件数限制:

echo "fs.file-max=65535" >> /etc/sysctl.conf
sysctl -p

查看特定进程限制:

cat /proc/1526/limits

查看指定进程已打开的文件数:

ls /proc/1526/fd/|wc -l

修改进程方面限制:

ulimit -HSn 65535 #只对当前用户有效

修改永久限制:

#centos6 /etc/security/limits.d/90-nproc.conf 
cat >>/etc/security/limits.conf<<EOF 
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF

如不能保持:

cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF

Centos7下修改/etc/security/limits.conf文件只在用户登录后打开的进程有效,系统服务或通过rc.local启动的无效,系统服务修改文件/usr/lib/systemd/system/SOME_SERVICE.service添加:

[Service]
LimitNOFILE=65535

rc.local启动进程前添加:

ulimit -SHn 65535

Vim添加Nginx配置文件语法高亮

发布时间:May 4, 2012 // 分类:Vim // No Comments

mkdir -p ~/.vim/syntax/
wget -O ~/.vim/syntax/nginx.vim https://www.haiyun.me/usr/uploads/2012/05/2410071208.vim
echo "au BufRead,BufNewFile /usr/local/nginx/conf/* set ft=nginx" >> ~/.vimrc

效果图如下:
nginx配置.png

Linux服务器性能分析工具vmstat

发布时间:May 4, 2012 // 分类:系统调优 // No Comments

vmstat是一个全面的性能分析工具,可以用来观察系统的进程、IO、内存、CPU使用情况,对优化系统有很大的帮助。

vmstat 2 2

参数说明:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 362212 131608 314792    0    0     4    16  468   63  0  0 99  0  0
 0  0      0 362212 131608 314792    0    0     0     0  999   45  0  0 100  0  0
 0  0      0 362212 131608 314792    0    0     0     0 1007   65  0  0 100  0  0
procs:
r 正在运行或等待CPU的进程数
b 等待IO/内存等资源的进程数
memory:
swpd 虚拟内存的使用量
free 空闲的内存量
buff 块设备读写缓存
cache 文件系统读写缓存
SWAP:
si 从磁盘交换到内存的交换页数量,单位KB。
so 从内存交换到磁盘的交换页数量,单位KB。
IO:
bi 读取块设备的数量,单位块。
bo 写入块设备的数量,单位块。
System:
in 每秒的中断数,包括时钟中断。
cs 每秒的环境上下文切换次数。
CPU:
us 用户进程占用时间
sy 系统占用时间
id 闲置时间
wa IO等待时间

总结:

如果r大于3或4,且id小于%50,则CPU是瓶颈。
wa经常不等于0,b中的队列较大,则IO是瓶颈。
如bi bo长期不等于0,则内存较小。

Linux服务器用iostat监测硬盘I/O性能

发布时间:May 4, 2012 // 分类:系统调优 // No Comments

iostat使用语法:

iostat [ -c | -d] [ -k ] [ -t ] [ -x [device] ] [ <interval> [ <count> ] ]

使用参数:

-c 显示CPU的使用情况
-d 显示磁盘的使用情况
-k 以K为单位输出
-m 以M为单位输出
-t 显示执行时间
-x 更为详细的输出
interval 指定间隔时间
count 指定统计次数

iostat应用示例:

iostat -x 2 2 #统计2次,间隔2秒
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.04    0.00    1.55    0.00    0.00   97.41

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    36.79  0.00  7.25     0.00   352.33    48.57     0.00    0.50   0.50   0.36
sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2              0.00    36.79  0.00  7.25     0.00   352.33    48.57     0.00    0.50   0.50   0.36
dm-0              0.00     0.00  0.00 44.04     0.00   352.33     8.00     0.04    0.86   0.08   0.36
dm-1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
hdc               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

iostat参数说明:

Blk_read/s:每秒钟块设备写入块的数量,每块一般是4096字节
Blk_wrtn/s :每秒钟块设备读取块的数量
tps:每秒磁盘连续读次数和连续写次数之和
rrqm/s:每秒进行合并的读操作数目
wrqm/s:每秒进行合并的写操作数目
r/s:每秒完成读IO的次数
w/s:每秒完成写IO的次数
rsec/s:每秒读扇区数,每扇区512字节
wsec/s:每秒写扇区数,每扇区512字节
rkB/s:每秒读千字节数
wkB/s:每秒写千字节数
avgrq-sz:平均每次IO操作的数据大小(扇区),即(rsec/s+wsec/s)/(r/s+w/s)。
avgqu-sz:平均IO队列的长度
await:平均每次IO操作的等待时间,单位毫秒
svctm:平均每次IO操作的服务时间,单位毫秒
%util:一秒中有百分之多少的时间用于IO操作,即(r/s+w/s)*(svctm/1000)。

总结:

如果%util较大代表IO请求太多,硬盘可能存在瓶颈。
如果avctm比较接近await,说明IO几乎没等待时间。
如果await远大于avctm,说明IO队列太长,应用响应时间也变长。
avgqu-sz队列长度也可衡量IO负荷的指标,avgqu-sz是单位时间内的平均值。
其它还可参考vmstat结果b参数(等待资源的进程数)和wa参数(IO等待所占用CPU时间百分比)。
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...