首页 » 开源分析

使用限流策略,让系统更稳定

 

限流简介 什么是限流 限流是保障系统稳定性的一种策略。限流的思路是,当单位时间系统处理的请求量达到指定阈值,则后续的请求做特殊处理。如,后续的请求被抛弃,或者放到队列中一直等待,而不是及时处理。 生活中限流的应用也很多。如,地铁高峰时,每隔一段时间,放一定量的人进地铁。后面的人只能排队等着。 限流的 ...

PHP7源码阅读笔记(不断更新)

 

函数说明 zend_API.h Zend引擎提供的常用API函数 RETURN_STR(s) 作用:返回一个zend_string字符串。参考:参考示例 RETURN_STRING(s) 作用:返回一个char *字符串。参考:参考示例 ZEND_PARSE_PARAMETERS_START(min_num_args, max_num_args) 作用:在使用FAST ZPP方式解析PHP方法传入的参数时,会用到这个宏方法。这个 ...

PHP7源码分析之CG和EG

 

在阅读PHP源码的时候,会遇到很多宏。如果不了解这些宏的含义,对代码理解会带来很多困扰。现在我们就一起来看看CG和EG两个宏的含义。 CG 含义 CG的含义是 compiler_globals。Zend编译器相关的全局变量。 作用 大家都知道PHP代码最终是转化为Opcode去执行的。在PHP转换为Opcode过程中需要保存一些信息。这些信息就保存 ...

Btrace示例和资料整理

 

Btrace示例 在这个示例中,我们将实现Btrace脚本跟踪一个成员变量的变化。 被跟踪类的代码如下: package com.bo56; class Demo { private static int counter; public void add(){ try { counter++; System.out.println("bo56.com " + counter); ...

深入了解xhprof性能分析工具

 

前言 这篇文章不是教你如何安装使用xhprof进行性能分析。如果想了解如何安装使用xhprof,网络上文章很多,你也可以看我之前写的两篇文章。 非侵入式监控PHP应用性能监控分析 xhprof gui,让xhprof界面更漂亮,功能更强大 这篇文章主要介绍使用xhprof时的一些常见问题,和xhprof是如何实现性能分析的。 常见问题 多次调 ...

使用LVS,关闭网卡LRO/GRO功能

 

现在大多数网卡都具有LRO/GRO功能。即,网卡收包时将同一流的小包合并成大包 (tcpdump抓包可以看到>MTU 1500bytes的数据包)交给内核协议栈。LVS内核模块在处理>MTU的数据包时,会丢弃。 因此,如果我们用LVS来传输大文件,很容易出现丢包,传输速度慢。 解决方法,关闭LRO/GRO功能,命令: $ethtool -k eth0 #查看 ...

解决crond脚本执行并发冲突问题

 

问题 在crond配置脚本执行后,经常会出现重复执行的情况。如下面的脚本: <?php sleep(70); ?> 如果,在crond中的配置项如下: */1 * * * * root php ./test.php 就出出现,之前执行的test.php还未结束,新的test.php又被执行。如下: [hailong@vhost ~]$ ps aux | grep tt.php 56667 5280 0.0 0.0 10 ...

非侵入式监控PHP应用性能监控分析

 

前言 所谓非侵入式监控PHP应用性能,就是不修改现有系统代码,而对系统进行监控。这样的系统才能更容易的应用到PHP应用中。这里抛砖引玉,欢迎大家交流。 方案一 如果只是监控每次请求的访问时间。直接检测nginx的日志即可。在nginx的日志中有两个选项。$request_time 和 $upstream_response_time 。 这两个选项记录了 ...

Gearmand异步处理就安全了吗?不!

 

前言 之前使用Gearman的时候,遇到过一个卡顿的问题。今天微博上又有人问我是否遇到过此类问题。这个问题,当时是伯诚老师解决的。我把他的文章搬过来。希望能给遇到此类问题的人一点参考。 问题 使用Gearman作为异步消息处理中间件是却没有想象中的顺利。我们多次发现Gearmand进程会将PHP的请求Hold住,不做任何响应, ...

ReactPHP,PHP版的Node.js

 

前言 前段时间csdn找我约稿。一直忙于项目,也没来及写。十一的时候,学习了下ReactPHP。把了解的一些东西整理成文。难免有疏漏,如发现请指正。原文已经发布到csdn。网址 http://www.csdn.net/article/2015-10-12/2825887 从名字说起 虽然ReactPHP项目已经发展了有4年之久,但是对于其称呼显得有点混乱。在开源中国为 ...

[坑]打rpm包时,注意%post和%postun的执行顺序

 

问题 掉进坑里面了。最近完成了阿里PHP5.5.25的rpm打包。今天在升级其中一个扩展的时候发现,只要升级成功之后,扩展在配置文件中相关配置项就会被注释掉。最终定位到是spec文件中%postun段写的有问题。 spec文件中%postun段的代码示例如下: %postun conf_path="/php-fpm/lib/php.ini" sed -i 's/^\[tclip\]/;\[tclip ...