write down,forget

nginx升级1.0及自定义server-header

<Category: Linux>

今天发布了nginx1.0,把我的vps的也升级下,顺便修改下header信息,移除了版本号。

移除header信息里面nginx的版本号

nginx1.0升级步骤

修改header里面server的名称,让你的servername更加个性:

重新编译安装

效果如下,是不是很酷?:

本文来自: nginx升级1.0及自定义server-header

使用dropbear代替sshd

<Category: Linux>

本文来自: 使用dropbear代替sshd

Linux kernel 的 sendfile 是如何提高性能的

<Category: Linux>

转:http://www.vpsee.com/2009/07/linux-sendfile-improve-performance/

现在流行的 web 服务器里面都提供 sendfile 选项用来提高服务器性能,那到底 sendfile 是什么,怎么影响性能的呢?sendfile 实际上是 Linux 2.0+ 以后的推出的一个系统调用,web 服务器可以通过调整自身的配置来决定是否利用 sendfile 这个系统调用。先来看一下不用 sendfile 的传统网络传输过程:

read(file, tmp_buf, len);
write(socket, tmp_buf, len);

硬盘 >> kernel buffer >> user buffer >> kernel socket buffer >> 协议栈

一般来说一个网络应用是通过读硬盘数据,然后写数据到 socket 来完成网络传输的。上面2行用代码解释了这一点,不过上面2行简单的代码掩盖了底层的很多操作。来看看底层是怎么执行上面2行代码的:

1、系统调用 read() 产生一个上下文切换:从 user mode 切换到 kernel mode,然后 DMA 执行拷贝,把文件数据从硬盘读到一个 kernel buffer 里。
2、数据从 kernel buffer 拷贝到 user buffer,然后系统调用 read() 返回,这时又产生一个上下文切换:从kernel mode 切换到 user mode。
3、系统调用 write() 产生一个上下文切换:从 user mode 切换到 kernel mode,然后把步骤2读到 user buffer 的数据拷贝到 kernel buffer(数据第2次拷贝到 kernel buffer),不过这次是个不同的 kernel buffer,这个 buffer 和 socket 相关联。
4、系统调用 write() 返回,产生一个上下文切换:从 kernel mode 切换到 user mode(第4次切换了),然后 DMA 从 kernel buffer 拷贝数据到协议栈(第4次拷贝了)。

上面4个步骤有4次上下文切换,有4次拷贝,我们发现如果能减少切换次数和拷贝次数将会有效提升性能。在kernel 2.0+ 版本中,系统调用 sendfile() 就是用来简化上面步骤提升性能的。sendfile() 不但能减少切换次数而且还能减少拷贝次数。

再来看一下用 sendfile() 来进行网络传输的过程:

sendfile(socket, file, len);

硬盘 >> kernel buffer (快速拷贝到kernel socket buffer) >> 协议栈

1、系统调用 sendfile() 通过 DMA 把硬盘数据拷贝到 kernel buffer,然后数据被 kernel 直接拷贝到另外一个与 socket 相关的 kernel buffer。这里没有 user mode 和 kernel mode 之间的切换,在 kernel 中直接完成了从一个 buffer 到另一个 buffer 的拷贝。
2、DMA 把数据从 kernel buffer 直接拷贝给协议栈,没有切换,也不需要数据从 user mode 拷贝到 kernel mode,因为数据就在 kernel 里。

步骤减少了,切换减少了,拷贝减少了,自然性能就提升了。这就是为什么说在 Nginx 配置文件里打开 sendfile on 选项能提高 web server性能的原因。

本文来自: Linux kernel 的 sendfile 是如何提高性能的

mysql-bin.000001-x

<Category: Linux, mysql>

发达了,mysql-bin占了我9g空间啊,大汗一把:
20K mysql-bin.000001
700K mysql-bin.000002
4.0K mysql-bin.000003
4.0K mysql-bin.000004
4.0K mysql-bin.000005
4.0K mysql-bin.000006
4.0K mysql-bin.000007
4.0K mysql-bin.000008
4.0K mysql-bin.000009
4.0K mysql-bin.000010
11M mysql-bin.000011
63M mysql-bin.000012
368K mysql-bin.000013
256K mysql-bin.000014
9.5M mysql-bin.000015
1.8M mysql-bin.000016
11M mysql-bin.000017
508K mysql-bin.000018
45M mysql-bin.000019
146M mysql-bin.000020
86M mysql-bin.000021
2.2M mysql-bin.000022
2.6M mysql-bin.000023
124K mysql-bin.000024
8.7M mysql-bin.000025
4.9M mysql-bin.000026
428K mysql-bin.000027
372K mysql-bin.000028
123M mysql-bin.000029
17M mysql-bin.000030
4.0K mysql-bin.000031
700K mysql-bin.000032
454M mysql-bin.000033
14M mysql-bin.000034
841M mysql-bin.000035
388M mysql-bin.000036
26M mysql-bin.000037
728K mysql-bin.000038
216M mysql-bin.000039
228M mysql-bin.000040
294M mysql-bin.000041
14M mysql-bin.000042
155M mysql-bin.000043
13M mysql-bin.000044
884K mysql-bin.000045
13M mysql-bin.000046
434M mysql-bin.000047
206M mysql-bin.000048
171M mysql-bin.000049
528K mysql-bin.000050
61M mysql-bin.000051
330M mysql-bin.000052
199M mysql-bin.000053
64M mysql-bin.000054
436K mysql-bin.000055
17M mysql-bin.000056
340K mysql-bin.000057
116M mysql-bin.000058
18M mysql-bin.000059
23M mysql-bin.000060
188M mysql-bin.000061
40K mysql-bin.000062
277M mysql-bin.000063
4.0K mysql-bin.000064
35M mysql-bin.000065
258M mysql-bin.000066
147M mysql-bin.000067
79M mysql-bin.000068
4.0K mysql-bin.000069
4.0K mysql-bin.000070
434M mysql-bin.000071
4.0K mysql-bin.000072
99M mysql-bin.000073
52M mysql-bin.000074
620K mysql-bin.000075
428M mysql-bin.000076
788K mysql-bin.000077
4.0K mysql-bin.000078
4.0K mysql-bin.000079
126M mysql-bin.000080
137M mysql-bin.000081
428K mysql-bin.000082
31M mysql-bin.000083
4.0K mysql-bin.index
阅读这篇文章的其余部分

本文来自: mysql-bin.000001-x

python,遍历目录生成html文件列表

<Category: Python>

使用方法:walk.py>index.html

另外一种,使用pyh来生成(比较慢).
阅读这篇文章的其余部分

本文来自: python,遍历目录生成html文件列表

php-cgi内存优化

<Category: Linux>

php-cgi内存优化

优化前:

修改/usr/local/php/etc下的php-fpm.conf和php.ini文件,去掉不需要的扩展

优化后:

只要一个php-cgi进程占用的内存超过 %1 就把它kill掉

放crontab里面,每5分钟执行一次

htop挺不错,可以很方便对cpu占用率、内存占用率等进行排序,推荐一下

本文来自: php-cgi内存优化

urllib2的delete操作

<Category: Python>

http://apps.hi.baidu.com/share/detail/23498106

本文来自: urllib2的delete操作

python string padding left

<Category: Python, 小道消息>

make string(ex. ‘3’, ’32’) left padded with zeroes (ex. ‘003’, ‘032’)

HOWTO:

本文来自: python string padding left

wix tips

<Category: .NET>

设置property的属性是否直接被更改: Indirect=”yes”

,INSTALLDIR为你的目录Id
访问安装的目标文件夹,session[“INSTALLDIR”]

自动更新:produc、package的Id不能为“*”,然后product的upgradeCode和upgradeCode必须要一致

customaction要加 Execute=”immediate”

如果需要获取属性值的时候,确保至少在Before=’InstallFinalize’ 时候执行相应的操作

本文来自: wix tips

How to make searching faster

<Category: Lucene>

http://wiki.apache.org/lucene-java/ImproveSearchingSpeed

Here are some things to try to speed up the seaching speed of your Lucene application. Please see ImproveIndexingSpeed for how to speed up indexing.

阅读这篇文章的其余部分

本文来自: How to make searching faster