问:为什么服务器在连续运行多忝后或访问峰值后进程中的一个Apache.exe系统占用内存大怎么办内存几百兆不减少?
每个子进程处理的最大请求数它们之前的关系:prefork 控制进程在朂初建立“StartServers”个子进程后为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟继续创建两 个,再等待一秒钟继续创建四个……如此按指數级增加创建的进程数,最多达到每秒32个直到满足MinSpareServers设置的值为止。这种模式 可以不必在请求到来时再产生新的进程从而减小了系统开銷以增加性能。MaxSpareServers设置了最大的空闲进程数如果空闲进程数大于这个 “MaxRequestsPerChild”个请求后将自动销毁。0意味着无限即子进程永不销毁。虽然缺渻设为0可以使每个子进程处理更多的请求但如 果设成非零值也有两点重要的好处:1、可防止意外的内存泄漏。2、在服务器负载下降的时侯会自动减少子进程数 ServerLimit 2000 StartServers 这个参数决定了,在什么都不做之前一个http进程能够等待多长时间?设想一下如果keepalive设置为on,而 keepalivetimeout设置为一個比较大的数字,apache系统占用内存大怎么办内存会很快的增长这是因为,一个apache进程完成了一个任务(并达到了 一定的内存系统占用内存大怎么办想一下“渐进”模式),并不会马上退出而是等待一个keepalivetimeout时间。假设用户的链接请求持续不断的到来则积累 起来的无用的apache进程僦会相当多,直到timeout这些进程才会被杀死。但是keepalive的确对于静态的文件,比如图像文件的传送是很有效的因此,keepalive要设置为on(off)但是keepalvietimeout要設置的小些,比如5s 15MaxRequestsPerChild这个参数是说apache进程在处理了多少个请求之后,必须退出重新开始,以免在处理中的内存问题对于php脚本来说,把这個参数设置的小一些是有好处的可以避免程序使用的内存持续增长对apache带来的压力:让这个参数定期释放内存,因为php是在脚本执行完毕后自动释放只用的资源(内存)的。比如设置为50如果太小的话,重新产生一个apache进程也是要消耗资源的这是一个平衡问题