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

除了调试服务器对并发的处理之外还有session并发的情况

时间: 2024-12-14 08:10:09

Apache 打开网页的时候等待时间过长的解决方案的相关文章

Windows 8/8.1 进入欢迎&amp;登录界面前黑屏且等待时间过长&amp;登录假死解决方法

笔记本和公司的电脑同时出现这问题,和休眠无关 公司就算了,HDD也没在意,笔记本SSD也黑屏等待一阵就匪夷所思了,于是找到解决方法 一.黑屏 问题:进入欢迎&登录界面前黑屏等待时间过长,会黑屏一阵,大概30秒到1分钟 解决:运行 services.msc 打开服务,找到 Windows Font Cache Service 服务,设置为自动 然后那个黑屏问题就解决了 二.登录假死 这种情况一般出现在设置密码后,首先把密码删掉,重启再设置一次后就解决

winform里面打开网页,以及意想不到的功能

首先,新建一个winform项目,我在想,如果想要实现打开网页功能的话,应该会有一个控件什么之类的吧?查了工具栏,真的有一个名叫 WebBrowser的家伙,应该就是这货没错了.在网上查了它的资料更加坚定了我的判断,二话不说,拖进Form里.接着,就是要显示一个网页了,要怎 么实现呢?继续查看WebBrowser都有啥属性和方法: 方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项 GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项 GoHo

Js打开网页后居中显示

使用JavaScript定义打开网页后居中显示,并可为窗口设置大小,使用“window.open”方法打开新窗口:先来看完整的代码及调用方法: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>打开居中的窗口</title> <script language="javascript"> //参数-url:要打开的网站,winname:打开后

cocos2d-x 用浏览器打开网页

转自:http://www.xuebuyuan.com/1396292.html,http://www.cocoachina.com/bbs/read.php?tid=88589 First!! 源代码里加入: //判断当前是否为Android平台 #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //定义Jni函数信息结构体 JniMethodInfo minfo; bool isHave = JniHelper::getStaticMethodI

The server of Apache (三)——网页与安全优化

在企业中,部署apache后只采用默认的配置参数,会有很多问题,因为那些配置都是针对以前服务器配置的. 一.网页压缩 1.介绍 配置apache的网页压缩功能,是使用Gzip压缩算法来对apache服务器发布的网页内容进行压缩后再传输到客户端浏览器,这样做,降低了网络传输的字节数,加快网页的加载速度,节省流量,改善用户体验,并且使用gzip与搜索引擎的抓取工具有着更好的关系. 能实现压缩功能的模块有mod_gzip模块和mod_deflate模块. Apache1.x系列没有内建网页压缩技术,但

C#调用默认浏览器打开网页的几种方法

CSharp调用默认浏览器打开网页的几种方法 示例界面: 方法一:从注册表中读取默认浏览器可执行文件路径 private void button1_Click(object sender, EventArgs e) { //从注册表中读取默认浏览器可执行文件路径 RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\"); string s = key.GetValue("&qu

屏蔽webBrowser打开网页的弹窗

<strong>1.  屏蔽打开网页时的"JS错误"弹窗</strong> 方法I:  将WebBrowser的"Silent"属性设置为"TRUE" 方法II: 代码实现 m_web.put_Silent(TRUE);    //m_web为web控件变量 <strong>2.  屏蔽打开网页时的其他弹窗</strong> 方法I: 重载Web控件所在窗口的方法"OnAmbientPro

Winform中打开网页页面的方法

1.首先比较简单的我们知道有类似的方法如下 System.Diagnostics.Process.Start("http://www.baidu.com"); 2.比较灵活一点,可以定义窗口大小,我们要实现网页中脚本打开页面的方法,即window.open 那么,我们必然会想,如何调用页面的脚本呢?其实可以利用WebBrowser来实现 //连接 string url ="http://www.baidu.com"; //定义脚本 string script =@&

SSH远程连接连接其他主机,等待时间过长的原因。

ssh远程连接登录到其他主机,输入登录用户名,等待时间很长时间,然后才出现输入密码的提示.导致这样时间过长,太慢了的原因有两个.(1)当使用ssh远程登录到某个IP时,这个IP的主机系统会读取/etc/ssh/sshd_config配置,在这里文件里面有一项"UseDNS yes",而这项虽然是用"#"注释的,但是默认情况下,他就是启动的,这句话的意思是允许系统根据/etc/resolve.conf域名服务去反解析这IP,反查找IP要花费一定时间,如果DNS服务器里