PHP+CMS+网站 · 2011年06月22号 0

Kloxo极限优化安装包for linux 只占35M内存

本优化包根据Kloxo官方制作 精简了部分Kloxo所带功能,优化了mysql,mysql优化文件是从HostInABox提取,请放心使用;Lighttpd占用内存37MB ,Apache内存占用不超过80MB
一键安装方式[code]wget https://blog.62.la/kloxo.sh;sh ./kloxo.sh;[/code]下载 [url=https://blog.62.la/my.cnf]https://blog.62.la/my.cnf[/url]
MySql的优化配置文件请放到etc文件夹里面,覆盖原文件

还有安装完Kloxo后请不要使用Bind Dns Server,请用djbdns这个占用的内存比Bind Dns Server少很多

后台地址:http://你的IP:7778/

登录-切换程序-选择Lighttpd
切换完成后 点击服务 关掉一些不必要的服务

和我一样就差不多了,其实Qmail没多大用的,国外对垃圾邮件很严格,建议关闭,安全很多

我们也关闭了iptables 他的作用不大,有时候会给新人带来很大的困扰

最后优化完成后,你就INIT 6吧
重启后你会看到你的内存被压缩的差不多了的

下面是Lighttpd优化,让Lighttpd开4个进程,已解决访问量大的站点500问题[code]echo “server.max-worker = 4” >> /etc/lighttpd/lighttpd.conf
echo “server.max-connections = 1024” >> /etc/lighttpd/lighttpd.conf
echo “server.max-fds = 2048” >> /etc/lighttpd/lighttpd.conf
echo “server.max-keep-alive-idle = 5” >> /etc/lighttpd/lighttpd.conf
echo “server.max-keep-alive-requests = 1000″ >> /etc/lighttpd/lighttpd.conf[/code]不会的我放出了Lighttpd优化过的的配置文件 lighttpd.rar (3.62 KB) lighttpd.rar (3.62 KB)
下载次数: 1

2010-4-25 12:06覆盖到/etc/lighttpd/里面

下面是单独对Lighttpd优化技巧

1 最大连接数

默认是1024
修改 server.max-fds,大流量网站推荐2048.

因为lighttpd基于线程,而apache(MPM-prefork)基于子进程,
所以apache需要设置startservers,maxclients等,这里不需要
2 stat() 缓存

stat() 这样的系统调用,开销也是相当明显的.
缓存能够节约时间和环境切换次数(context switches)

一句话,lighttpd.conf加上
server.stat-cache-engine = “fam”

lighttpd还另外提供simple(缓存1秒内的stat()),disabled选项.
相信没人会选disabled吧.
3 常连接(HTTP Keep-Alive)

一般来说,一个系统能够打开的文件个数是有限制的(文件描述符限制)
常连接占用文件描述符,对非并发的访问没有什么意义.

(文件描述符的数量和许多原因有关,比如日志文件数量,并发数目等)

这是lighttpd在keep-alive方面的默认值.
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 30

换言之,lighttpd最多可以同时承受30秒长的常连接,每个连接最多请求128个文件.
但这个默认值确实不适合非并发这种多数情况.

lighttpd.conf 中减小
server.max-keep-alive-requests
server.max-keep-alive-idle
两个值,可以减缓这种现象.

甚至可以关闭lighttpd keep-alive.
server.max-keep-alive-requests = 0
4 事件处理

对于linux kernel 2.6来说,没有别的可说
lighttpd.conf中加上这一句足矣
server.event-handler = “linux-sysepoll”

另外,
linux 2.4 使用 linux-rtsig
solaris: solaris-devpoll
freebsd 使用 freebsd-kqueue
unix 使用 poll
5 网络处理

lighttpd 大量使用了 sendfile() 这样一个高效的系统调用.
减少了从应用程序到网卡间的距离.
(同时也减少了lighttpd对cpu的占用,这部分占用转嫁到内核身上了)

根据平台,可以设置不同的参数.
(linux) server.network-backend = “linux-sendfile”
solaris: solaris-sendfilev
freebsd: freebsd-sendfile
unix: writev

如果有兴趣的话,也可以看看lighttpd在async io(aio)上的实现,仅限 lighttpd 1.5
(linux-aio-sendfile, posix-aio, gthread-aio)

此外,网络方面,核心的参数也需要适当进行修改,
这里就不需要详细说明了.
6 涉及 lighttpd.conf 参数总结

以下适合linux 2.6,php-fastcgi

var.author=”fcicq”
server.stat-cache-engine = “fam”
server.network-backend = “linux-sendfile”
server.event-handler = “linux-sysepoll”
server.max-keep-alive-requests = 0

ps:
注意到不对劲了没有?

lighttpd主要用来跑php(fastcgi)…
静态页面的话有可能会用更牛的服务器软件,而不用lighttpd.

静态服务:
server.max-keep-alive-requests = 128
server.max-keep-alive-idle = 5
server.max-read-idle = 60
server.max-write-idle = 360

server.max-fds = 2048 (needs to run as root)

动态服务:
server.max-keep-alive-requests = 0

====

server.use-noatime = “enable” (or mount with -o noatime)

server.max-stat-threads = 2 (静态服务可调大)
server.max-read-threads = 64 (2-4 per disk is good.)

ulimit -SHn 51200

lighttpd VS ngix 性能比较,技术架构比较[转的]

最近在公司里进行了一次深入HTTP分享,有同事提到了 lighttpd在处理大文件时性能很差,不如ngix. 之前也没有对ngix研究过,所以无法评估.加上这么多年的linux上大型系统的开发经验和仔细研究过lighttpd 的代码,当时对同事的答复是估计ngix也提高不了到哪里去,最多10%,只是代码写法的一点差异. 同事们不太相信. 结束后上google查了一下ngix的资料,并下载了原代码进行研究(个人喜好从代码级研究认证,不喜欢看网上的评论,尤其是国内的评论,很多评论是没有经过深入研究之后的误人之第),并从网上找了一些评论,果然有看到lighttpd大文件下载或大并发连接性能不好之类的评论.

经过仔细研究ngix代码之后发现,ngix的技术架构是结合lighttpd和apache之长, module的写法基本上与apache 一致,非常类似; 网络处理的架构与lighttpd类似,都是使用单进程单线程方式,并使用异步I/O,sendfile等,在linux2.6内核都使用epoll处理网络事件, 因此很难看出本质上的区别,唯一的区别是ngix充分利用了C语言的特性来节省内存(如bit位).

经过20000个并发连接测试10万次小文件下载测试,两者性能上差别不大,CPU消耗都在10%以内; 再进行大文件测试10万次下载,并发2000,两者相差不大,CPU消耗都是在4%以内,lighttpd的CPU消耗甚至还小一点. 这个时候的网络带宽已经完全被消耗干净,充分利用了网络带宽.

因此就非常奇怪为什么网上有评价lighttpd性能差的原因? 仔细思考后,估计是lighttpd的event_handler配置问题,因为默认event_handler是使用poll, 而不是epoll(linux). 然后注释掉#server.event-handler=”linux-sysepoll” 再进行性能测试,果然发现lighttpd的CPU消耗就上去了. 看来网上的评论就是这个缘故,使用了默认配置,而ngix默认配置就是使用了epoll.

说明了国内很多人没有仔细研究过系统,就对系统枉加评论,结果误导了很多人.这也是我听到同事说什么什么问题是网上评论的时候,我总是怀疑其正确性的原因.

mrtg、awstats和bugzilla移到lighttpd下使用[也是转的]

今天晚饭后抽了点闲功夫,把mrtg、awstats和bugzilla都移到的lighttpd下,于是把之前单独为这几个东西跑的apache 停了,全部使用lighttpd提供web服务,系统开销又能小一些。

mrtg很容易移植,几乎不用配置甚么就可以了,awstats和bugzilla都是perl的,需要配置lighttpd的cgi支持,简单的使用下面一行即可搞定awstats的移植
$HTTP[“url”] =~ “^/awstats/” {
cgi.assign = (
“.pl” => “/usr/bin/perl”,
“.cgi” => “/usr/bin/perl”
)
}

不过照着上面的代码设置bugzilla的时候却遇到了问题,bugzilla的每个文件里面第一行的perl命令后加入了 -wT参数,在lighhtpd下以cgi模式运行会报 500 错误,尝试修改了index.cgi,去掉 -wT参数后可以正常运行,于是使用了下面的一句命令,把全部的cgi文件中-wT参数都给去掉了,这句命令估计对很多人都能有帮助:)
sed -in-place -e “s/ -wT/ /g” `grep ” -wT” -l ./*.cgi`

Lighttpd 图片和视频等文件的防盗链处理[转的]

用过Apache的朋友都知道mod_rewrite可以用来进行处理防盗链,Lighttpd也有同样的功能,而且总的来说,lighttpd.conf配置文件比httpd.conf更简单明了。原来一直使用Apache来处理防盗链,今天修改了服务器上Lighttpd 的配置,直接实现了防盗链,下面是防盗链部分的代码。
$HTTP[“referer”] !~ “^($|http://.*\.(toplee\.com|8zone\.cn))” {
$HTTP[“url”] =~ “\.(jpg|jpeg|png|gif|rar|zip|mp3)$” {
url.redirect = (”.*” => “[url=https://blog.62.la/]https://blog.62.la/[/url]”)
}
}