为了迎接将来的高负载状态,本周对HTTP SERVER进行了综合测试和研究
实际测试表明,某HTTP容器 运行PHP和CGI的效率要比Apache提升数倍。并且在多路复用的优势上该容器面临相同负载的同时占用的系统资源和宝贵的服务器内存要少很多~~!
今天十分高兴,该测试不枉费我多天的努力~
下面举个例子:
系统测试:
在1G内存的前提下平均每个进程仅占用内存3%,而相比之前的Apache的7%要少上一倍还要多!
并且在HTTPD并发500人的服务器上做测试,Apache占用500进程,而该容器仅仅占用15个进程...(从高并发数就看出他们的差距了),cpu的AVG从Apache的10~30下降到0.3~0.8!真是惊人的对比啊。。。
I/O测试:
PHP文件 - 写入某1kb文件10万次
Apache 5.6s 某容器 5.7s
(大家相差不多,Apache还略占优势)
CGI文件 - 写入某1kb文件10万次
Apache 17.8s 某容器 9.5s
(Apache处绝性对劣势)
ab测试(100人并发10000次...
实际测试表明,某HTTP容器 运行PHP和CGI的效率要比Apache提升数倍。并且在多路复用的优势上该容器面临相同负载的同时占用的系统资源和宝贵的服务器内存要少很多~~!
今天十分高兴,该测试不枉费我多天的努力~
下面举个例子:
系统测试:
在1G内存的前提下平均每个进程仅占用内存3%,而相比之前的Apache的7%要少上一倍还要多!
并且在HTTPD并发500人的服务器上做测试,Apache占用500进程,而该容器仅仅占用15个进程...(从高并发数就看出他们的差距了),cpu的AVG从Apache的10~30下降到0.3~0.8!真是惊人的对比啊。。。
I/O测试:
PHP文件 - 写入某1kb文件10万次
Apache 5.6s 某容器 5.7s
(大家相差不多,Apache还略占优势)
CGI文件 - 写入某1kb文件10万次
Apache 17.8s 某容器 9.5s
(Apache处绝性对劣势)
ab测试(100人并发10000次...
由于X64编译C的方式有些不同所以要做些小小的修改,其实许多其他开源类代码进行编译的时候都可以使用类似的方法来解决
tar xzvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-static (加了参数就装不了)
#如果make出错make前先vi Makefile 加一句找到 CFLAGS= -O2 -I$(srcdir) 在后面加入-fPIC,即变成CFLAGS= -O2 -I$(srcdir) -fPIC
#在./libtool这里改成libotool安装SRC目录 ../libtool-1.5/libtool
make
make install-lib
tar xzvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-static (加了参数就装不了)
#如果make出错make前先vi Makefile 加一句找到 CFLAGS= -O2 -I$(srcdir) 在后面加入-fPIC,即变成CFLAGS= -O2 -I$(srcdir) -fPIC
#在./libtool这里改成libotool安装SRC目录 ../libtool-1.5/libtool
make
make install-lib
可以让大家在服务器端从容应对各种应用,和满足某些变态要求,虽然perl和php实现很多功能比较方便,不过在shell里还是sh脚本来的效率高
#!/bin/sh
for file in `find /home/test/ -type f ! -name '*\.class' ! -name '*gif'`;
do
vim -s script $file > /dev/null 2>&1
#echo "file: $file"
done
script:
:%s:http\://192.168.0.218:http\://http\://192.168.5.219:ge | update
:q
这个脚本是 把目录/home/test/ 下的文件中的http://192.168.0.218 替换为 http://192.168.5.219
#!/bin/sh
for file in `find /home/test/ -type f ! -name '*\.class' ! -name '*gif'`;
do
vim -s script $file > /dev/null 2>&1
#echo "file: $file"
done
script:
:%s:http\://192.168.0.218:http\://http\://192.168.5.219:ge | update
:q
这个脚本是 把目录/home/test/ 下的文件中的http://192.168.0.218 替换为 http://192.168.5.219
实际使用下来感觉只适合Apache 1.3 ,2.x的请使用mod_cband
下载模块: ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
官方网址: http://www.cohprog.com/mod_bandwidth.html
安装方法
1、APACI 安装
cp mod_bandwidth.c /path/to/apache/source
./configure --add-module=mod_bandwidth.c --permute-module=BEGIN:bandwidth
2、DSO方式安装
apxs -c /mod_bandwidth.c -o /path/to/apache/libexec/mod_bandwidth.so
在httpd.conf加入
LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c
建立mod_bandwid...
下载模块: ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
官方网址: http://www.cohprog.com/mod_bandwidth.html
安装方法
1、APACI 安装
cp mod_bandwidth.c /path/to/apache/source
./configure --add-module=mod_bandwidth.c --permute-module=BEGIN:bandwidth
2、DSO方式安装
apxs -c /mod_bandwidth.c -o /path/to/apache/libexec/mod_bandwidth.so
在httpd.conf加入
LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c
建立mod_bandwid...
当LILO启动完成时,会在屏幕上显示字符串”LILO”,其实这其中的每个字母背后都对应着特定的操作。如果LILO在某个部分出了错,我们就可以根据屏幕上当前出现的字母推断出故障原因。
LILO启动分为两个步骤,由第一个步骤将第二个步骤的代码调入内存。
如果启动LILO时,磁盘出现瞬间的错误,则在“L”字母后会输出一串二进制数字。此时如不中止LILO运行,屏幕上会出现无穷的错误代码输出,这种情况可以重新启动LILO试试。
屏幕上什么都没出现:LILO并未被装载。原因可能是LILO还未被安装或者LILO所在的 分区未被设为active状态。
L : LILO启动了到第一步,但在将第二部分调入内存时出现了错误。两位错误代码指出了错误类型面,具体内容见后面所附的磁盘错误代码。
LI:LILO引导程序的第一部分能够将LILO引导装入程序的第二部分装入,
但却不能执行。这可能是因为硬盘参数设置不当或者是因为在移
动/boot/boot.b时没有运行map 安装程序。
LIL:引导程序的第二部分已经工作,但它无法从map文件中装载描述符
表,原因可能是介质故...
LILO启动分为两个步骤,由第一个步骤将第二个步骤的代码调入内存。
如果启动LILO时,磁盘出现瞬间的错误,则在“L”字母后会输出一串二进制数字。此时如不中止LILO运行,屏幕上会出现无穷的错误代码输出,这种情况可以重新启动LILO试试。
屏幕上什么都没出现:LILO并未被装载。原因可能是LILO还未被安装或者LILO所在的 分区未被设为active状态。
L : LILO启动了到第一步,但在将第二部分调入内存时出现了错误。两位错误代码指出了错误类型面,具体内容见后面所附的磁盘错误代码。
LI:LILO引导程序的第一部分能够将LILO引导装入程序的第二部分装入,
但却不能执行。这可能是因为硬盘参数设置不当或者是因为在移
动/boot/boot.b时没有运行map 安装程序。
LIL:引导程序的第二部分已经工作,但它无法从map文件中装载描述符
表,原因可能是介质故...