PHP大力瘦身
时间:2006-09-01 来源:ilcj
转载于CU hightman
先来看看一组对比, 同样是 PHP4.4.x, 用缺省方式编译及优化编译后的差异.
修改前(含mbstring扩展) 一般肯定都在 4MB以上
-rwxr-xr-x 1 root root 6310637 Apr 6 11:10 php
-rwxr-xr-x 1 root root 5967262 Dec 30 2005 libphp4.so
指定选项修改后
-rwxr-xr-x 1 root root 2079344 Aug 31 11:40 php
-rwxr-xr-x 1 root root 2542583 Aug 31 11:40 libphp4.so
前后对比大约差 50%左右!! :p 其实主要差异在于缺省的编译选项包含了 -g 即 gdb 除错调试信息, 对于较为稳定的正式服务可以去掉 -g 参数, 作法很简单在 运行 configure 前以下面的方式进行:
CODE:
[Copy to clipboard]
CFLAGS="-O2" ./configure --prefix=/usr/local .....
其中 -O2 可以试试用 -O3 来代替, 赶快试试吧, 让你的 php 更加小巧更加快速.
该方法适用于大多数 GNU 软件包, 含apache, php5等...
-- 附言 --
瘦身几MB意味着什么呢, 对于prefork工作方式的apache来说, 每个http请求对应着一个httpd进程, 而 libphp4.so 是 httpd 进程的一部分, 光光代码空间就要好几 MB, 一般在 top 中可以看到 一个 httpd 进程所占用的内存, 一般在 14M ~ 30M 之间不等 (线程式的要多一些)
假定一个 httpd 进程使用约 20MB 内存,那么 100个进程就耗掉 2G 内存了, 操作系统在物理内存用完后就必须启用交换空间进行换页, 效率将会大大下降... 所以对于高并发的服务器来说,这里无疑成了瓶颈之一.
当然随着 httpd2.x 越来越稳定, 大部分都升级至此,一个进程带着25个线程在跑, 内存上有所缓和.
先来看看一组对比, 同样是 PHP4.4.x, 用缺省方式编译及优化编译后的差异.
修改前(含mbstring扩展) 一般肯定都在 4MB以上
-rwxr-xr-x 1 root root 6310637 Apr 6 11:10 php
-rwxr-xr-x 1 root root 5967262 Dec 30 2005 libphp4.so
指定选项修改后
-rwxr-xr-x 1 root root 2079344 Aug 31 11:40 php
-rwxr-xr-x 1 root root 2542583 Aug 31 11:40 libphp4.so
前后对比大约差 50%左右!! :p 其实主要差异在于缺省的编译选项包含了 -g 即 gdb 除错调试信息, 对于较为稳定的正式服务可以去掉 -g 参数, 作法很简单在 运行 configure 前以下面的方式进行:
CODE:
[Copy to clipboard]
CFLAGS="-O2" ./configure --prefix=/usr/local .....
其中 -O2 可以试试用 -O3 来代替, 赶快试试吧, 让你的 php 更加小巧更加快速.
该方法适用于大多数 GNU 软件包, 含apache, php5等...
-- 附言 --
瘦身几MB意味着什么呢, 对于prefork工作方式的apache来说, 每个http请求对应着一个httpd进程, 而 libphp4.so 是 httpd 进程的一部分, 光光代码空间就要好几 MB, 一般在 top 中可以看到 一个 httpd 进程所占用的内存, 一般在 14M ~ 30M 之间不等 (线程式的要多一些)
假定一个 httpd 进程使用约 20MB 内存,那么 100个进程就耗掉 2G 内存了, 操作系统在物理内存用完后就必须启用交换空间进行换页, 效率将会大大下降... 所以对于高并发的服务器来说,这里无疑成了瓶颈之一.
当然随着 httpd2.x 越来越稳定, 大部分都升级至此,一个进程带着25个线程在跑, 内存上有所缓和.
相关阅读 更多 +