深入了解xhprof性能分析工具

 

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

Java常用分析工具之jmap

 

简介 jmap是JDK中提供的一个用来监视进程运行中的jvm物理内存的占用情况的工具。该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量。当系统崩溃时,jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等。 使用jmap会影响线上运行的应用,所以尽量不要在线上执行此命令 ...

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

 
network

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

在2016的phpcon大会上的分享PPT下载

 
crond_php_script

这是在2016年,在phpcon大会上分享的PPT。感谢 锅巴和板子,组织这么好的活动。虽然,大会第一天下起了雨,但是人还是爆满。居然还有来自日本的同学。倍感意外。 以下是PPT几张关键的PPT截图和PPT下载地址: PHP问题排查实践 解决问题的思路 gearman导致cpu100问题解决方法 案例详细分析:《php进程导致服务器cpu ...

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

crond中使用flock命令的坑

 

现象 需要定期去执行一个PHP脚本,首先想到的是通过crond命令来实现这个功能。但是,在crond的执行过程中发现一个诡异的事情。在crond中的配置如下。 */1 * * * * root /usr/bin/flock -xn /tmp/test.lock -c '/usr/bin/php /home/hailong/test.php > /tmp/test.tt 2>&1' 脚本只会在第一次成功执行,之后 ...

淘宝社区双十一性能优化实践

 
myweibo

这个是我在《2016全球第二届PHP开发者大会》上的分享。分享的主题是《淘宝社区双十一性能优化实践》。主要讲解了如何做性能优化,如何做分库分表。以下是PPT重要内容的几个截图。如有疑问,欢迎沟通交流。 大纲 性能优化思路 如何做分库分表 memcache数据同步 降级系统架构 降级系统的详细介绍可以查看 《使 ...

JVM内存结构

 
Cookbook_JVMArguments_2_MemoryModel

前言 在Java语言开发过程中,out of memory错误是很常见的一种错误。对于JVM的内存结构有更深入的了解,更更好的帮我们排查此类问题,有效的避免此类问题发生。在JAVA 8中内存结构有进行了改变,Metaspace替代了PermGen。 内存结构简介 JVM的内存结构如下图所示:(图片来源于网络) JVM的内存结构大概分为: 堆(hea ...

PHP返回内容过长时被nginx截断的解决办法

 
屏幕快照 2016-03-28 下午1.18.02

背景 周日把博客的版本升级到最新,顺便又从新部署了nginx和PHP的环境。使用了PHP7。从新部署环境后发现原先发布博客文章时,编辑框不能正常显示。如图: 分析 查看了html源代码,发现html源代码被截断了。因此,导致网页内容显示不全。 之后的整个分析过程绕了一大圈,即是tcpdump,又是用tcpflow进行网络包分析。最 ...

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

 
xhprof_20160126

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

PHP扩展迁移为兼容PHP7记录

 

PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容。有不少方法参数做了调整。下面是在迁移过程中遇到的一些问题。记录下来,避免大家再踩坑。 PHP7扩展开发之hello word 白话PHP7扩展开发之创建对象 add_assoc_stringl 方法参数改为四个。 add_assoc_stringl(parray, key, value, value_le ...

PHP7扩展开发之hello word

 

本文是以PHP7作为基础,讲解如何从零开始创建一个PHP扩展。本文主要讲解创建一个扩展的基本步骤都有哪些。示例中,我们将实现如下功能: <?php echo say(); ?> 输出内容: $ php ./test.php $ hello word 在扩展中实现一个say方法,调用say方法后,输出 hello word。 第一步:生成代码 PHP为我们提供 ...