一般情况是:
1开应用服务器——用户下载——报线程挂起——下载量下降——报线程N长时间没活动,超过was设置的阀值,释放掉。
2开应用服务器——用户下载——报线程挂起——下载量继续或者上升,挂起线程越来越多——was自动调整线程阀值——调不过来,挂。
经过查找,基本确定问题:是因为用户在用浏览器下载文件时,网络瞬断或其他原因,导致抛出异常,但是下载的线程并未释放。可打开浏览器下载,下到一半直接关掉浏览器来模拟这个现象。
byte[] b = new byte[1024];
while ((len = inread(b)) != -1) {
outwrite(b, 0, len);
}
登录后复制
修改为
byte[] b = new byte[1024];
while ((len = inread(b)) != -1) {
Threadsleep(50);
Threadyield();
outwrite(b, 0, len);
}
登录后复制
一些人建议的方法是,在服务器端给线程做个时间限制,超过时间的就关掉;但是这样做,较低网速下载大文件的用户,又会受到影响。因此用上面的做法是:线程处理一段时间,停一会,让出CPU控制权,不至于造成堵塞。
这个方法可能不是最好的,但是至少是比较合适的,现在服务器上线程挂起的现象已经大大减少,并且额外加了一句
if (requestgetHeader("Range") != null) {
ErrShow(request, response, "不支持多线程!");
return;
}
登录后复制
这样避免掉用下载工具的多线程下载。
哪位有更优解,请提出来,一起讨论一下。
刚才看到用守护线程来处理超时线程的解决方案,但另外一个技术主管极力反对,哪位能解释一下,为什么不可用?守护线程在什么情况下可用?谢谢THINKPHP作为国内比较出色的PHP框架,近年发展还是比较迅速,目前最新版本已经到TP51,安全性能等都有不少提升,使用的程序员也越来越多,所以THINKPHP制作的网站也越来越多,今天,方维网络就来分析THINKPHP网站打不开的原因有哪些?当你的网站打不开时,方便你排查问题!
一、服务器挂了。如果网站打不开的表现是网络连接错误,没有输出任何错误信息,那么很可能就是服务器网络出问题或者服务器死机了。
二、数据库挂了。一般会提示错误信息,如果没有屏蔽错误,会直接显示数据库连接错误。
三、网站空间满了。不管是nginx还是apache,或是THINKPHP本身,都会产生很多日志文件,当硬盘不够大的时候,THINKPHP无法生成缓存文件,导致网站打不开出错。这种问题很简单,就是从服务器删除占用比较大的日志文件或者对服务器进行扩容。
四、apache、nginx或者是IIS挂了,这个可以进服务器查看,可以重启下。
五、网站文件被篡改,一般是网站密码泄露或者网站已经被黑客攻破的情况。这种可以通过FTP软件查看网站文件的修改日期来判断。
六、程序本身有问题,如存在死循环等BUG,这个就需要程序员去调试分析,这种出现概率比较低,因为一般早期就可发现。
七、访问量太大,服务器无法应付,这种情况应该升级服务器,或者 使用负载均衡分服务器部署,当然也可以使用一些缓存来缓解。
八、服务器网络和本地网络出现故障,如在国内访问国外服务器的网站,速度非常慢导致网站打不开。
九、服务器放在国外,然后服务器IP被国内屏蔽导致打不开,这种只能换服务器了。
THINKPHP网站打不开的原因很多,但最常见的就是:硬盘已满或者服务器出故障。
深圳方维网络专注于网站定制,定制各类品牌官网、商城、平台、旅游网站和小程序等,欢迎有需求客户咨询。常见服务器硬件故障排查判断:服务器常见故障的诊断与解决:服务器故障排除第一部分 服务器故障排除的基本原则性问题服务器故障排除一、服务器开机黑屏故障排查1检查供电环境,零-火;零-地电压?2检查电源指示灯,如果亮,正常吗?3按下电源开关时,键盘上指示灯亮吗?风扇全部转动吗?4是否更换过显示器,更换另一台显示器。5去掉增加内存6去掉增加的CPU7去掉增加的第三方I/O卡8检查内存和CPU插的是否牢靠9 Clear CMOS10更换主要备件,如系统板,内存和CPU服务器故障排除二、服务器故障排除的基本原则1尽量恢复系统缺省配置a:硬件配置:去除第三方厂商备件和非标配备件;b:资源配置:清除CMOS,恢复资源初始配置;c: BIOS,F/W,驱动程序:升级最新的BIOS,F/W和相关驱动程序;d: TPL:扩展的第三方的I/O卡属于该机型的硬件兼容列表(TPL)吗?2从基本到复杂a:系统上从个体到网络:首先将存在故障的服务器独立运行,待测试正常后再接入网络运行,观察故障现象变化并处理。b:硬件上从最小系统到现实系统:指从可以运行的硬件开始逐步到现实系统为止。c:软件上从基本系统到现实系统:指从基本 *** 作系统开始逐步到现实系统为止。3交换对比a:在最大可能相同的条件下,交换 *** 作简单效果明显的部件;b:交换NOS载体,既交换软件环境;c:交换硬件,既交换硬件环境;d:交换整机,既交换整体环境;服务器故障排除三、服务器故障排除需要收集哪些信息?服务器信息:1机器型号2机器序列号(S/N:如:NC00075534)3Bios版本4是否增加其它设备,如网卡,SCSI卡,内存,CPU5硬盘如何配置,是否做阵列,阵列级别6安装什么 *** 作系统及版本(Windows Server, Netware, Sco, others)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)