tcprstat源码分析之tcp数据包分析

 

tcprstat是percona用来监测mysql响应时间的。不过对于任何运行在TCP协议上的响应时间,都可以用。本文主要做源码分析,如何使用tcprstat请大家查看博文《tcprstat分析服务的响应速度利器》 tcprstat和tcpdump一样,使用libpcap库进行抓包,然后再通过程序对抓取的tcp包进行分析。 tcprstat对tcp包分析的大概流程如下: ...

mysql的cardinality异常,导致索引不可用

 

前段时间,一大早上,就收到报警,警告php-fpm进程的数量超过阈值。最终发现是一条sql没用到索引,导致执行数据库查询慢了,最终导致php-fpm进程数增加。最终通过analyze table feed_comment_info_id_0000 命令更新了Cardinality ,才能再次用到索引。 排查过程如下: sql语句: select id from feed_comment_info_id_ ...

php进程导致服务器cpu 100问题追查过程

 

前段时间,出现了一次服务器cpu 占用100的问题。以下为追查原因的过程。仅当抛砖引玉,欢迎拍砖。 查看占用cpu高的进程 想找出占用cpu高的进程,用top命令就可以搞定。 $top .....此处省略n多行... 10434 root 20 0 509m 174m 1528 R 99.7 0.5 8:42.43 php ...

动态修改php的配置项

 

我们一般修改php的配置项都是在php.ini中修改。在php,ini中的修改会影响到所有使用php的程序。假如我想让修改只在某个域名下生效,该如何做呢? 使用ini_set() 首先想到的可能是使用ini_set()方法在脚本中修改。但是这个只能修改作用域为PHP_INI_USER和PHP_INI_ALL的配置项。具体配置项作用域说明请查看 PHP配置指令作用 ...

PHP配置指令作用域说明

 

PHP总共有4个配置指令作用域,分别是PHP_INI_USER,PHP_INI_PERDIR,PHP_INI_SYSTEM,PHP_INI_ALL。这些作用域限制了指令是否可以被修改,在那里可以被修改。php的每个配置项都会有一个作用域。下面是对四种作用域的说明。 作用域类型 说明 PHP_INI_USER 可在用户脚本(如 ini_set())或Windows注册表(PHP 5 ...

xhprof gui,让xhprof界面更漂亮,功能更强大

 

顾名思义,xhprof gui 就是一个xhprof的一个ui展现。作者hack了facebook发布的xhprof展现代码。使xhprof界面更漂亮,功能更强大。 xhprof gui新增了如下特性: * 友好的界面 * 数据库存储(mysql) * 支持按请求百分比执行xhprof优化。降低服务器负载。 * 支持相似url的概念。如:http://news.example.com/?story=23 ht ...

core dump磁盘报警问题排查过程

 

磁盘报警。分区磁盘容量已经占用超过80%。同一批上线的几台机器都没报警。而且离报警阀值还差很远。 大概的排查步骤如下: 首先,查找导致磁盘报警的大文件 $ find /home/ -type f -size +100M /home/demo/web/demo/api/core.7982 /home/demo/web/demo/api/core.10035 ..................... 此处省略N多行 ......... ...

当cpu飙升时,找出php中可能有问题的代码行

 

当你发现一个平时占用cpu比较少的进程突然间占用cpu接近100%时,你如何找到导致cpu飙升的原因?我的思路是,首先找到进程正在执行的代码行,从而确定可能有问题的代码段。然后,再仔细分析有问题的代码段,从而找出原因。 如果你的程序使用的是c、c++编写,那么你可以很容易的找到正在执行的代码行。但是,程序是php编 ...

php内核探索之zend_execute的具体执行过程

 

解释器引擎最终执行op的函数是zend_execute,实际上zend_execute是一个函数指针,在引擎初始化的时候zend_execute默认指向了execute,这个execute定义在{PHPSRC}/Zend/zend_vm_execute.h: ZEND_API void execute(zend_op_array *op_array TSRMLS_DC) { zend_execute_data *execute_data; zend_bool nest ...

一次DNS域名解析问题排查记录

 

通过http的方式调用了其他引擎的数据。调用数据出现问题。出现问题时,现象如下: [hailong.xhl@s006130 logs]$curl "http://demo.bo56.com:2088/bin/search?append=k" [hailong.xhl@s006130 logs]$curl: (7) couldn't connect to host 继续跟踪,发现连接的是一个实体机ip,而非vip。 connect(3, {sa_fa ...

如何找出发生SEGV内存错误的程序

 

前言 这个可以说是《小心,apc可能导致php-fpm罢工!》的续。因为这篇文章有个问题没说清楚,而且映雪同学昨天又问起这个问题。 ​ ​问题 ​18-Feb-2014 15:48:45] WARNING: [pool www] child 11274 exited on signal 11 (SIGSEGV) after 0.089068 seconds from start 显然11274进程运行过程中遇到了段错误导致进程异常 ...