热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

包含sh监控php程序运行数量的词条

本文目录一览:1、请问php如何实现实时监控文件.

本文目录一览:


  • 1、请问php如何实现实时监控文件.


  • 2、PHP程序,如何监控内存情况


  • 3、如何使用监控宝监控php-fpm状态

请问php如何实现实时监控文件.

在服务端建立一个根据需要进行循环的PHP脚本就可以。

猜测一下,您的第二个问题,是不是想进行相关检测以避免重复触发这个脚本。

实际上,不建议由用户行为触发这个脚本,无论是服务端代码,还是客户端的异步Ajax。

如果要用PHP脚本进行不停的循环监控,请联系运维人员,服务器启动,即在服务端开始运行这个脚本,他们会向您提供解决方案的。

真正的建议是,如果有任何可能,都不要使用PHP脚本利用循环代码进行服务端的监控。

不得不承认,这个方面PHP的稳定性还差一些,Java或许可以这么做,PHP就比较痛苦了。

比较可能的办法是请运维人员帮忙,通报监控逻辑,然后请他安装各种触发条件调用相应的PHP代码。

如果坚持使用PHP脚本进行相关工作,有两个建议给您:

尽快释放资源,无论脚本使用了什么资源,包括文件、内存、数据库等等,都尽快释放,这种地方可万万不能偷懒,否则就是自虐了。

在这个脚本中进行独立的手工日志输出,任何一层循环的入口都要进行记录,这样在监控失败的时候才有办法查找问题。

PHP程序,如何监控内存情况

看到有人写透视宝做php监控的原理图,跟你分享下。我估计大家做的方式都是差不多。

PHP运行支撑的ZendEngine早在设计过程中已经预留了丰富的Hook,可以有效干涉处理过程中的几个关键步骤。利用了以下几个Hook,就能方便的获取数据:

1.           zend_compile_file zend_compile_string

加载分析文件或字符串,本身就会造成非常大的IO,如果过多地执行加载,无疑会造成内存和CPU的消耗.通过这两个hook,可以取得文件名、执行行数、使用内存和CPU占用时间。

2.           zend_execute zend_execute_internal

通过这两个hook的使用,我们可以准确地分析得出一个PHP应用中的类调用、方法调用、方法参数、内存占用和CPU占用,加以分析,便可以准确得出应用系统运行过程中的方法运行栈,API调用地址,SQL语句,CacheKey以及Cache命中等关键信息。

3.           zend_throw_exception_hook

利用异常钩子,可以准确地得到应用系统运行过程中出现的异常信息,当然包括异常发生的类\方法位置,参数,异常code和异常message。

4.           zend_error_cb

错误钩子则更加直接,可以准确得到系统运行过程中出现的任何一个warning,代码错误或语法错误。

如何使用监控宝监控php-fpm状态

在开始之前,请确保已经开启php-fpm的status。

一、创建收集数据脚本

新建脚本/home/sh/monitor_fpm.sh,并添加到cronjob,每五分钟运行一次。脚本代码为:

fpm_status=$(curl -s )

start_since_now=$(echo "$fpm_status" | awk -F':' '/start since/{gsub(/ /,"",$2);print $2}')

listen_queue=$(echo "$fpm_status" | awk -F':' '/^listen queue:/{gsub(/ /,"",$2);print $2}')

idle_processes=$(echo "$fpm_status" | awk -F':' '/idle processes/{gsub(/ /,"",$2);print $2}')

active_processes=$(echo "$fpm_status" | awk -F':' '/^active processes:/{gsub(/ /,"",$2);print $2}')

total_processes=$(echo "$fpm_status" | awk -F':' '/total processes/{gsub(/ /,"",$2);print $2}')

accepted_conn_now=$(echo "$fpm_status" | awk -F':' '/accepted conn/{gsub(/ /,"",$2);print $2}')

max_listen_queue=$(echo "$fpm_status" | awk -F':' '/max listen queue/{gsub(/ /,"",$2);print $2}')

max_active_processes=$(echo "$fpm_status" | awk -F':' '/max active processes/{gsub(/ /,"",$2);print $2}')

max_children_reached=$(echo "$fpm_status" | awk -F':' '/max children reached/{gsub(/ /,"",$2);print $2}')

if [ -f "/tmp/accepted_conn78" ];then

accepted_conn_pre=$(cat /tmp/accepted_conn78)

((accepted_conn_inc=$accepted_conn_now - $accepted_conn_pre))

[[ $accepted_conn_inc -lt 0 ]] accepted_conn_inc=0

else

accepted_conn_inc=0

fi

echo $accepted_conn_now /tmp/accepted_conn78

if [ -f "/tmp/start_since78" ];then

start_since_pre=$(cat /tmp/start_since78)

((start_since_inc=$start_since_now - $start_since_pre))

[[ $start_since_inc -lt 0 ]] per_request=0 || ((per_request=$accepted_conn_inc/$start_since_inc))

else

per_request=0

fi

echo $start_since_now /tmp/start_since78

echo "pre

accepted_conn:$accepted_conn_inc

listen_queue:$listen_queue

idle_processes:$idle_processes

active_processes:$active_processes

total_processes:$total_processes

per_request:$per_request

max_listen_queue:$max_listen_queue

max_active_processes:$max_active_processes

max_children_reached:$max_children_reached

/pre" /home/

二、到监控宝添加自定义监控

1、点击网站头部的创建监控项目,拉到底部,选择创建自定义监控,再点击创建自定义监控规则,

2、基本信息填写

1

3、规则指标添加

2

3、添加php请求图

3

4、添加php进程图

4

5、添加php最大值图

5

6、点击完成,输入监控fpm的页面

6

完成了以上步骤之后,过一段时间就可以看到php-fpm的状态统计信息了。


推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
author-avatar
333
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有