热门标签 | 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的状态统计信息了。


推荐阅读
  • 本文介绍了SPOJ2829题目的解法及优化方法。题目要求找出满足一定条件的数列,并对结果取模。文章详细解释了解题思路和算法实现,并提出了使用FMT优化的方法。最后,对于第三个限制条件,作者给出了处理方法。文章最后给出了代码实现。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
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社区 版权所有