Apache 打开网页的时候等待时间过长的解决方案
服务器搭建后经常在打开页面的时候,等待很长时间,有时候,都超过一分钟了,然后才能打开,但是打开后,速度又很快,休息一会再点击,又会很慢了,遇到了这种问题很头疼,由于不是专业做服务器配置的,所以刚开始没有找到好的解决办法,只能一点点去测试了
首先尝试了,给Apache开启Gzip功能,减少数据的传输,优化网络,但是效果不明显,还是一样的慢,如何开启GZIP,请查看上一篇日志,Apache开启GZIP。
然后尝试,加入缓存功能,也基本上没有效果,在页面中加入缓存,不在这里进行介绍了,可以查看相关资料。
经过仔细观察,发现是打开网页的时候,一直在等待xxx.xxx.com响应,证明不是GZIP或者是缓存的问题,应该是服务器响应的问题,在这个想到的,第一个是服务器能同时承受的连接数设置的过少,第二个是服务器已有资源已用完,只能等待释放新的资源。
在网上查找资料,开始修改上对于服务器的一些设置,先设置Apache的MPM模块(多路处理模块),设置模块中的相关选项,因为是使用的Windows操作系统,所以设置的模块为:<IfModule mpm_winnt_module>,此模块是在Windows服务器下使用的,该多路处理模块(MPM)是Windows NT上的默认值。它使用一个单独的父进程产生一个单独的子进程,在这个子进程中轮流产生多个线程来处理请求。
在此设置为:
ThreadStackSize 8388608 #用来控制堆栈大小
默认:NetWare上为65536,其他平台上等于操作系统默认值
这个指令用来设置处理客户端连接(包括调用模块以协助处理)的线程允许使用的最大栈尺寸(字节)。
大多数情况下,操作系统默认的栈尺寸很合理。但是在某些情况下,需要调整这个值:
在默认栈尺寸较小的平台上(比如HP-UX),Apache可能会在使用一些需要较大栈尺寸的第三方模块时崩溃。这样的问题可以通过将ThreadStackSize设置为一个较大的值来解决。这种调整应当仅仅在第三方模块提供者明确要求的情况下才需要,或者是您通过诊断确定是由于栈空间太小而导致崩溃。
在某些平台上,如果默认的栈空间大于服务器运行所需空间,那么将ThreadStackSize值降低到小于操作系统默认值可以让每个进程中允许生成的最大线程数量增加。这种类型的调整应该仅在测试环境中使用,并且对所有服务器进程进行充分的测试,因为处理某些罕见的请求需要较大的栈空间。一个很小的服务器配置变化就有可能使得当前的ThreadStackSize设置变得不合适。
ThreadsPerChild 350 每个子进程的服务线程数目
每个子进程的服务线程数目
MaxConnectionsPerChild 10000 最大连接数的一个服务器进程服务
最大连接数的一个服务器进程服务
一些其它的参数
# StartServers: 初始数量的服务器进程开始
# MinSpareThreads: 最小数量的工作线程,保存备用
# MaxSpareThreads: 最大数量的工作线程,保存备用
# ThreadsPerChild: 固定数量的工作线程在每个服务器进程
# MaxRequestWorkers: 最大数量的工作线程
# MaxConnectionsPerChild: 最大连接数的一个服务器进程服务
由于是在进行测试,所以所设置数量,并不提供准确的值,仅为解决问题页来,具体数值大小,请参考自身设计
以后设置完成后,问题依然没有解决,
然后设置服务的连接超超等,在extra/httpd-default.conf 文件,需要在httpd.conf中打开此注释
修改KeepAlive
KeepAlive指的是保持连接活跃
类似于Mysql的永久连接。如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。
表示单个进程的最大请求数
MaxKeepAliveRequests 指令限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为”0″,将不限制请求的数目。我们建议最好将此值设为一个比较大的值,以确保最优的服务器性能。
KeepAliveTimeout的设置说明:
Apache在关闭持久连接前等待下一个请求的秒数。一旦收到一个请求,超时值将会被设置为Timeout指令指定的秒数。
对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。
MaxRequestsPerChild 表示单个进程的最大请求数
以上设置完成后,重启服务器,测试后情况有所改观,但是还是经常出现等待响应。
再查找资料,见到有说人到,需要根据协议类型对监听Socket进行优化。
Accept Filter 接收之后对信息进行一个过滤,有介绍说是反向一个代理,具体也不清楚,看到了,果断试一下。
AcceptFilter http none
AcceptFilter https none
之后重启服务,然后进行测试,经过差不多4个小时的测试,没有出现正在等待响应的问题,至此问题基本解决,同时也开启了GZIP的功能,并且也进行了一些其它的优化。一直困扰多天的问题,终于烟消云散了,至于其它的问题,只能边发现问题,边解决问题了。
Apache 打开网页的时候等待时间过长的解决方案的更多相关文章
- 一个spring3.2的项目 从jdk1.7放到1.8的环境中编译,打开网页异常:spring jar包版本升级经历
背景:一个历史项目用的是 spring3.2 的版本,在jdk1.7中运行没有问题,但是如果在jdk1.8中运行就会报错 ---浏览器中显示: HTTP Status 500 - Servlet.in ...
- 性能问题: SQL*Net message from client 等待时间太长
今天我终于自己遇到了这个问题, PO form 打不开了, 看了下 trace 发现 SQL*Net message from client 等待时间太长. 但是这不可能是网络问题, 这个环境是在我电 ...
- nginx 访问localhost老是下载文件不能打开网页什么情况?
nginx打开网页直接下载文件的问题 nginx sites-available文件里的default已经修改过root 路径了. 但是访问localhost的时候总是直接下载网页而不是打开网址 很奇 ...
- Android -- 真正的 高仿微信 打开网页的进度条效果
(本博客为原创,http://www.cnblogs.com/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截 ...
- 在WPF程序中打开网页:使用代理服务器并可进行JS交互
本项目环境:使用VS2010(C#)编写的WPF程序,通过CefSharp在程序的窗体中打开网页.需要能够实现网页后台JS代码中调用的方法,从网页接收数据,并能返回数据给网页.运行程序的电脑不允许上网 ...
- 使用urllib2打开网页的三种方法
#coding:utf-8 import urllib2 import cookielib url="http://www.baidu.com" print '方法 1' resp ...
- (转)C#调用默认浏览器打开网页的几种方法
转载,原文地址:http://blog.csdn.net/testcs_dn/article/details/42246969 CSharp调用默认浏览器打开网页的几种方法 示例界面: 方法一:从注册 ...
- 用webBrowser打开网页出现脚本错误怎么办
当IE浏览器遇到脚本错误时,在浏览器左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框.我们在用webBrowser编写的程序打开网页,遇到脚本有问题是,会弹出一个错误 ...
- js实现打开网页自动弹出添加QQ好友邀请窗口
我们有时进一些网面或专题页面会自动弹出一个加为好友的对话框了,在研究了很久之后发现可以直接使用js来实现,下面我们一起来看js实现打开网页自动弹出添加QQ好友邀请窗口的方法. 第一步.JS脚本 这个是 ...
随机推荐
- Linux UBI子系统设计初探
问题领域 flash存储设备存在如下特点: 存在坏块 使用寿命较短 存储介质不稳定 读写速度慢 不支持随机访问(nand) 只能通过擦除将0改成1 最小读写单位为page or sub-page 便宜 ...
- React-Native android在windows下的踩坑记
坑很多,跳之前做好准备.没有VPN的同学请浏览完本文后慎行. 你需要先安装最新版本的node.js(我最后使用的是v4.1.2),前往官网下载>> 注:我win7已经安装过Visual ...
- 深入浅出JMS(二)--ActiveMQ简单介绍以及安装
现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...
- Linux查看进程PID信息
ps -ef|grep 进程名 可检索到具体进程PID以及启动命令行信息 ls -l /proc/进程ID Linux在启动程序时会在 /proc/PID 目录下以PID为名称创建一个文件存储相关进程 ...
- javascript 学习之自定义滚动条加滚轮事件
要自己写一个自定义滚动条加上滚轮事件,之前的没有滚轮事件不完整,今天整理了一个. 1.滚轮事件是不兼容的,firefox中是必需要用事件绑定的添加,用的DOMMouseScroll,当滚动鼠标的时候, ...
- URL重写无效
在IIS7或以上版本中使用urlrewriter时会出现无效的现像,这时候需要使用以下设置
- 20145205 《Java程序设计》第9周学习总结
教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC目的:让Java程序设计人员在撰写数据库操作程序时可以有个统一的接口,无须依赖特 ...
- MySql存储过程的操作
[存储过程1] 写一个存储过程 procedure实现两数相加 DELIMITER && CREATE PROCEDURE pr_add(xx INT,yy INT) BEGIN DE ...
- POJ 1274 The Perfect Stall、HDU 2063 过山车(最大流做二分匹配)
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24081 Accepted: 106 ...
- 清理session的案例
and OPNAME ='Sort Output'; and OPNAME ='Sort Output'; and OPNAME ='Sort Output' ); select 'alter sys ...