首页 » 开源分析 ( 第 3 页 )

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 ...

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的配置项

 

我们一般修改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 ...

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 ...

使用nginx限制百度蜘蛛的频繁抓取

 

百度蜘蛛抓取量骤增,导致服务器负载很高。最终用nginx的ngx_http_limit_req_module模块限制了百度蜘蛛的抓取频率。每分钟允许百度蜘蛛抓取200次,多余的抓取请求返回503。 nginx的配置: #全局配置 limit_req_zone $anti_spider zone=anti_spider:60m rate=200r/m; #某个server中 limit_req zone=anti_sp ...

安装tclip的php扩展

 

Tclip是一个智能图片裁剪程序。目前已经开源,由我维护。 Tclip的定位是智能图片裁剪,即裁剪后的图片会把图片中的重要区域保留。详细说明,请看日志《tclip人脸识别图片裁剪》。演示地址:http://demo.bo56.com Tclip提供了php扩展方式使用。具体安装过程分为两步。第一步是安装opencv2。第二步是安装php扩展。 安装过 ...

linux中使用valgrind检测内存泄露

 

众所周知,c或者c++编写的程序很容易出现内存泄露问题。valgrind是一个很好的工具,可以检测程序中的内存泄露问题。 什么是内存泄露 内存泄露可以分为两种: 一种是,程序中有指针指向通过malloc或者new申请的内存,但是在程序结束前,一直未收回。如果这种内存一直增加的话,可能导致内存耗尽。不过程序结束后系统会自 ...

在php中如何使用json_decode解析gbk编码的json字符串

 

今天看到csdn的bbs上有人问如何用json_decode解析gbk编码的串。 大家都知道,json都是utf8编码的。json_encode后的字符串都是会变成"\u4fe1\u6d77\u9f99"格式。 如下面的代码: $arr = "信海龙"; echo json_encode($arr); 输出结果为:"\u4fe1\u6d77\u9f99" 如果你有一个符合json格式的gbk编码的字符串,如 ...

从MySQL到Redis 提升数据迁移的效率

 

场景是从MySQL中将数据导入到Redis的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样可能没什么错,但是速度会非常慢。而如果能够使MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可能就省事多了。 根据测试800w的数据迁移,时间从90分钟缩短到2分钟。 具体案例如下 ...