一次php进程诡异退出的排查过程

 

背景 最近给XX项目搭建一个反垃圾平台。效果不错,但是出现了一个诡异的事情。离线扫描部分会有一个常驻的php进程,以便处理发现的垃圾信息。常驻的php进程总是诡异的退出。php代码示例如下: <?php while(1){ $content = fgets(STDIN); if(empty($content)){ sleep(1); } //逻辑处理部分 ...

妙用php中的register_shutdown_function和fastcgi_finish_request

 

前言 在php中又两个方法都是在请求快结束的时候执行。方法名分别是 register_shutdown_function和fastcgi_finish_request。虽然执行的时机差不多,但是功能和应用场景不一样。比较两个方法的区别不是本文的重点。本文的重点的说明两个方法的应用场景。 register_shutdown_function 功能: 注册一个方法,当一个请求requ ...

mac安装wireshark

 

前言介绍 wireshark是一个很好的网络数据包抓取和分析软件。是一个跨平台的软件。可以在windows,mac,linux多种操作系统下安装使用。本篇博文主要是介绍如何在mac操作系统下安装。 安装环境 软件版本:wireshark Stable Release (1.12.2) 操作系统:mac OS X Yosemite,版本 10.10。 安装步骤 第一步:到官方网站下载 ...

mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication解决办法

 

mysqlnd是个好东西。不仅可以提高与mysql数据库通信的效率,而且也可以方便的设置一些超时。如,连接超时,查询超时。 但是,使用mysqlnd的时候,有个地方需要注意。就是服务端的密码格式不能使用旧的16位的存储格式,而要使用新的41位的存储格式。 如果,服务端的密码格式是16位,那么就会报错。信息如下: Fatal erro ...

调试利器之tcpdump详解

 

简介 你执行 man tcpdump 命令,你会看到文档中对tcpdump的说明是“dump traffic on a network”。可见,tcpdump是一个根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等 ...

ip地址中的网络号,主机号

 

当前使用的IP地址有4个字节(32bit)组成,即IPV4编码方式。每个IP地址包括两部分:网络号和主机号。当分配给主机号的二进制位越多,则能标识的主机数就越多,相应地能标识的网络数就越少,反之同理。 ip地址中的网络号,主机号有什么作用? 打个很简单的比喻:网卡的MAC地址就像你身份证上的身份证号码,虽然是唯一的 ...

注意sql语句中的通配符,别掉坑里面!

 

现象: 有一个表 action_conf,数据如下: 如果想获取以exp_site_10_开头的en_name的记录,sql语句该如何写? so easy! select en_name from action_conf where en_name like 'exp_site_10_%' 很自信的在idb中执行了这条sql,就会发现结果并不是所预期的。 你会发现,执行上面的sql会把所有以 exp_site_10开头的 ...

libcurl中使用curl_easy_getinfo 产生段错误分析

 

最近再写一个hsf的代理程序。需要使用libcurl与后端的nginx通信。程序编写过程中遇到一个蹊跷的问题。 调用 code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &rsp_code); 后会报段错误。 示例代码如下: static int http_proxy(std::string domain, std::string path, std::string params, std::string & ...

*** glibc detected ***

 

现象: 今天线上一台服务器的php打算升级到php5.5,导入流量后,在php的error log中出现了一些 glibc delected错误。 如: *** glibc detected *** ./test: double free or corruption (fasttop): 0x00000000049cc010 *** 原因: 重复free 示例: #include"stdio.h" #include "stdlib.h" #include ...

/usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory

 

问题: 当你执行yum 命令时提示如下错误: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory 解决方法: 上面的提示说明yum脚本没有找到python命令。 只要找到python命令的路径,然后建立个软链接即可。 如: sudo ln -s /usr/bin/python2.4 /usr/bin/python ps: yum命令是用python脚本写的 ...

linux shell中"2>&1"含义

 
&1"含义">

执行命令是 /home/demo.sh >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。 对于2 ,表示标准错误,stderr。 2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null 最后一个& 是让程序在后台执行。 为何2>&1要写在 ...

tcprstat分析服务的响应速度利器

 

tcprstat是percona用来监测mysql响应时间的。不过对于任何运行在TCP协议上的响应时间,都可以用。 下面是一个监控示例,监控分析mysql的3306端口。 $sudo tcprstat -p 3306 -t 1 -n 5 timestamp count max min avg med stddev 95_max 95_avg 95_std 99_max 99_avg 99_std 1283261499 1870 559009 39 883 153 13306 126 ...