php include类文件超时问题处理
最近发现,php运行自动加载类函数时总是超时,跟踪php慢查询日志,发现程序卡在了include某个类文件时竟然超时。
初步定位是io响应超时,硬盘读取有问题。
通过几个命令来定位:
iostat -d -x -k 1 10 // 运行10次查看iostat中wait参数很大,一般不超过5ms,await svctm这2个参数越接近,io性能越好。
参考别的博客,
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。
sudo iotop -o , // 查看在划硬盘的程序,查看进程io占用比例
sudo perf top // 查看进程io占用比例
sudo hdparm -t /dev/**** 查看磁盘读取效率
显示: Timing buffered disk reads: 10 MB in 3.14 seconds = 3.18 MB/sec
查看非中断睡眠
while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done
通过上述命令跟踪后,硬盘读取效率很低,进一步原因,还不得而知,猜想可能是硬盘有坏道。
相关推荐
-
PHP中几种常见的超时处理全面总结
在PHP开发中工作里非常多使用到超时处理到超时的场合,我说几个场景: 1. 异步获取数据如果某个后端数据源获取不成功则跳过,不影响整个页面展现 2. 为了保证Web服务器不会因为当个页面处理性能差而导致无法访问其他页面,则会对某些页面操作设置 3. 对于某些上传或者不确定处理时间的场合,则需要对整个流程中所有超时设置为无限,否则任何一个环节设置不当,都会导致莫名执行中断 4. 多个后端模块(MySQL.Memcached.HTTP接口),为了防止单个接口性能太差,导致整个前面获取数据太缓慢,影响
-
深入php函数file_get_contents超时处理的方法详解
一.增加超时的时间限制 这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间.真正的修改 file_get_contents延时可以用resource $context的timeout参数: 复制代码 代码如下: $opts = array( 'http'=>array( 'method'=>"GET", 'timeout'=>60,
-
PHP file_get_contents设置超时处理方法
file_get_contents的超时处理 话说,从PHP5开始,file_get_content已经支持context了(手册上写着:5.0.0 Added the context support. ),也就是说,从5.0开始,file_get_contents其实也可以POST数据. 今天说的这篇是讲超时的,确实在跨服务器提交的时候,不可避免的会遇到超时的情况,这个时候怎么办?set_time_limit是没有用的,只有用context中的timeout时间来控制.相反,我们不是要抑止,而
-
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
[详细错误]:HTTP 错误 500.0 - Internal Server ErrorC:\Program Files\PHP\php-cgi.exe - FastCGI 进程超过了配置的请求超时时限[环境]:php + IIS7.5解决办法:方法一:C:\Windows\System32\inetsrv\config\applicationHost.config 进行编辑,将activityTimeout设置调大,默认为600(10分钟),最大支持3600(1小时),单位秒~ 方法二:开始-
-
PHP中捕获超时事件的方法实例
set_error_handler()不能捕获致命错误(具体错误类型见手册). 所以需要如下方法: <?php ini_set ( 'max_execution_time', 1 ); function shutdown() { $a = error_get_last (); print_r ( $a ); } register_shutdown_function ( 'shutdown' ); while ( true ) { } 注意:sleep()停顿时间不算在max_execution_
-
php页面函数设置超时限制的方法
本文实例讲述了php页面函数设置超时限制的方法.分享给大家供大家参考.具体方法如下: 碰到页面程序执行超时时会提醒Fatal error: Maximum execution time of 300 seconds exceeded 是因为程序执行时间超过了最大允许执行时间,解决办法我们总结了几个供大家选择. 对于函数我们可以常用下面方法,直接给函数设置超时时间来操作,代码如下: 复制代码 代码如下: declare(ticks = 1); function a(){ sleep
-
php设置页面超时时间解决方法
有时候我的页面因为网络卡,会一直转,我想是不是可以给页面设置一个超时时间,多久没反应就提示超时 比如php里的set_time_limit(300) 我想不是php页面也有个超时机制 ------解决思路---------------------- php 里不就是set_time_limit() 吗,你还可以设置php.ini中的max_execution_time来改变全局超时时间. ------解决思路---------------------- max_execution_time --
-
PHP函数超时处理方法
本文实例讲述了PHP函数超时处理方法.分享给大家供大家参考,具体如下: register_shutdown_function Registers the function named by function to be executed when script processing is complete or when exit() is called. 此函数可以重复注册,然后会依次调用 当发生致命性错误或者exit时都会调用此函数 error_reporting(0); register_
-
PHP访问MySQL查询超时处理的方法
目前两个客户端扩展库连接超时可以设置选项来操作,比如mysqli: 复制代码 代码如下: <?php //创建对象 $mysqli = mysqli_init(); //设置超时选项 $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5); //连接 $mysqli->real_connect('localhost', 'my_user', 'my_password', 'world'); //如果超时或者其他连接失败打印错误信息 if (mysq
-
php include类文件超时问题处理
最近发现,php运行自动加载类函数时总是超时,跟踪php慢查询日志,发现程序卡在了include某个类文件时竟然超时. 初步定位是io响应超时,硬盘读取有问题. 通过几个命令来定位: iostat -d -x -k 1 10 // 运行10次查看iostat中wait参数很大,一般不超过5ms,await svctm这2个参数越接近,io性能越好. 参考别的博客, await: 每一个IO请求的处理的平均时间(单位是微秒毫秒).这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5m
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
PHP前言: •动态地创建属性和方法 •对象的复制 •对象的比较 •加载指定的文件 •自动加载类文件 •命名空间 示例 1.类的相关知识点 3(动态地创建属性和方法) class/class3.php <?php /** * 类的相关知识点 3(动态地创建属性和方法) */ // 用于演示如何动态地创建属性(这就是 php 中所谓的重载) class Class1 { // __set 魔术方法,当设置的属性不存在或者不可访问(private)时就会调用此函数 public function _
-
ASP JSON类文件的使用方法
而且要使用某个节点的时候要好好的分析,节点的路径一级级的定位.而JSON最大的好处就是,在使用时候可以只需要将数据字符串声明为一个对象,就可以很方便的调用对象中的各成员.也方便在客户端使用Javascript直接调用程序端生成的数据字符串. 使用ASP的人都知道,ASP可以使用两种类型的脚本引擎,那就是VBSCRIPT和JSCRIPT.偶当初学习的时候就根本不知道JSCRIPT,如果知道的话我想我现在就没有必要这么麻烦的将JSON数据使用JSCRIPT转换后,才能在VBSCRIPT中使用.还好两
-
laravel通过创建自定义artisan make命令来新建类文件详解
前言 本文主要跟大家介绍的是关于laravel通过创建自定义artisan make命令来新建类文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 我们在laravel开发时经常用到artisan make:controller等命令来新建Controller.Model.Job.Event等类文件. 在Laravel5.2中artisan make命令支持创建如下文件: make:auth Scaffold basic login and registration
-
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
MongoCursor Object 游标类 MongoConfig.php配置文件Table.php(mongodb操作数据库类文件) Config.php配置文件 复制代码 代码如下: <?phprequire_once 'Zend/Exception.php';class Hrs_Mongo_Config{ const VERSION = '1.7.0'; const DEFAULT_HOST = 'localhost'; const DEFAULT_PORT = 270
-
php相对当前文件include其它文件的方法
本文实例讲述了php相对当前文件include其它文件的方法.分享给大家供大家参考.具体分析如下: 下面的代码先获得当前文件路径,然后通过相对路径包含其它php文件,在实际使用中非常有用 <?php $currentDir = dirname(__FILE__); include $currentDir . '/functions.php'; include $currentDir . '/classes.php'; ?> 希望本文所述对大家的php程序设计有所帮助.
-
PHP include任意文件或URL介绍
实践出真理,写一个简单文件PHP文件include一个js文件,执行后没有报错或警告信息,同时看到被包含js的文件的内容被打印出来.因此得出结论:include 目标文件可以是任意类型. 现在再回头看include的官方文档,其中有这么一段话:"当一个文件被包含时,语法解析器在目标文件的开头脱离 PHP 模式并进入 HTML 模式,到文件结尾处恢复.由于此原因,目标文件中需要作为 PHP 代码执行的任何代码都必须被包括在有效的 PHP 起始和结束标记之中." 注意其中提到"H
-
Nginx 上传大文件超时解决办法
Nginx 上传大文件超时解决办法 情况如下:用nginx作代理服务器,上传大文件时(本人测试上传50m的文件),提示上传超时或文件过大. 原因是nginx对上传文件大小有限制,而且默认是1M.另外,若上传文件很大,还要适当调整上传超时时间. 解决方法是在nginx的配置文件下,加上以下配置: client_max_body_size 50m; //文件大小限制,默认1m client_header_timeout 1m; client_body_timeout 1m; proxy_connec
-
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
根据 Mysql 里的字段 自动生成 类文件: 但需要导入: require_once ./db/ez_sql_core.php;require_once ./db/ez_sql_mysql.php; 帮助文档:http://jvmultimedia.com/docs/ezsql/ez_sql_help.htm 上图 : 核心代码: 复制代码 代码如下: <?php class db{ /******************************************************
-
Serv-U中禁止某类文件上传的设置方法
一.禁止某类文件上传 在用户的"目录访问"那里添加一条访问规则,路径设置为 *.exe ,取消所有的权限,并把这个规则放在最上面的位置. Path=*.exe Access=--– 这样处理后,该用户就不能在自己的目录上传*.exe的文件了,同时目录下面的*.exe文件也不会被列出来,也不能修改已经上传的文件后缀为exe.在Serv-U 6版本中测试正常. 二.只允许某类文件上传 1.在用户的"目录访问"那里添加一条访问规则,路径设置为 *.html,设置 读取.写
随机推荐
- 为什么我们要做三份 Webpack 配置文件
- 详解VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- 利用java实现单词倒序排列
- Python实现字符串反转的常用方法分析【4种方法】
- 按日期打印Python的Tornado框架中的日志的方法
- 哲学家就餐问题中的JAVA多线程学习
- Shell 命令替换的两种方式
- js 采用delete实现继承示例代码
- PHP两种实现无级递归分类的方法
- JMenuTab简单使用说明
- linux配置java环境变量详细过程
- 老生常谈 Java中的继承(必看)
- Java设计模式之访问模式(Visitor者模式)介绍
- Asp.Net、asp实现的搜索引擎网址收录检查程序
- IDC市场是否过冬 安全稳定说了算
- java中stack(栈)的使用代码实例
- Java开发之内部类对象的创建及hook机制分析
- Django开发中复选框用法示例
- Linux定时备份数据库到指定邮箱的方法
- 从理论角度讨论JavaScript闭包