+ -
当前位置:首页 → 问答吧 → linux下apache参数在线调节

linux下apache参数在线调节

时间:2011-07-07

来源:互联网

我所说的在线调节就是,在不重启apache的情况下修改配置文档中maxclient这类的参数(当然我说的不是平滑重启)。这几个月一直在研究这个课题,也一直找不到方法来实现。前段时间在其他地方看到一个帖子。对于其中的方法一直不能确定是否可行。按照上面的方法修改和编译了apache的源码,虽然没有报错误,但是apache一直起动不起来。启动时会报段错误。恳请对着这方面有研究的前辈,帮忙指点一下,这个方法是否可行。说说其他可行的方法也好。那片文章原文的地址是:http://www.poluoluo.com/jzxy/200809/45691_2.html。他前后两片文章也是讲这个问题的。主要方法如下:

要实现Apache的在线参数调节,首先要了解Apache的工作方式。本文使用的mpm是prefork,因此着重介绍prefork的工作方式。prefork模块是多进程模块,启动时,由父进程派生出多个子进程,父进程是管理进程,它按照配置文件的配置参数来控制子进程数,处理异常退出的子进程并向日志中记录出错情况,维护服务器的正常运转,它并不直接处理连接请求。服务器的连接请求是由派生出来的子进程进行处理的。父进程和子进程间通过记分板(scoreboard)进行通信。
记分板实际上是一段共享内存,它记录了一些全局的信息例如进程数上限(server_limit)和线程数上限(thread_limit),并且它还维护着每个工作子进程或线程的情况如进程号(pid),线程号(thread_num)以及进程或线程所处的状态(status)等。
要从外部程序在线修改apache的性能参数,需要通过读写共享内存记分板来实现。一般需要在共享内存记分板添加各性能参数对应的变量,通过动态修改记分板中的变量来动态调整apache的性能参数。
要从外部程序修改Apache的记分板,首先要了解是操作系统的共享内存机制的以及Apache共享内存中的具体内容。通过测试,Linux 2.6.9系统上所使用的是APR_USE_SHMEM_MMAP_ANON和APR_USE_SHMEM_SHMGET。通过设置配置文件中的ScoreboardFile选项使服务器使用有名共享内存,即System V的共享内存机制
。从而我们可以通过获取的共享内存首地址m对共享内存进行读写访问,有目的地修改记分板的内容。。。。。。。。

有兴趣或者了解的朋友可以看原文。后边的一篇文章是外部程序的代码。
我只是想知道这种方法是否可行。或者寻找一个其他的能实现的方法。。文章有点长,实属无奈。希望能人热心的朋友肯话点时间帮我看下。感激不尽。











作者: burnbird2046   发布时间: 2011-07-07

额。。。没人看吗

作者: burnbird2046   发布时间: 2011-07-07

热门下载

更多