使用 XHProf 进行 PHP 查询性能分析和问题追踪

XHProf是facebook开源出来的一个PHP轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。

安装

  • macOS

    1
    2
    
    brew search xhprof
    brew install php56-xhprof
    

PHP 代码命名与风格规范

1 概述

1.1 说明

  • 本规范适用于PHP项目代码相关规范的约定
  • 规范的作用,系提高代码的可读性、通用性、交付性以及整体质量
  • 该文档大量参考了PSR通用规范

1.2 注意

  • 变量、类属性的初始化
  • 考虑代码复用、耦合的权衡
  • 架构类、方法时需考虑扩展性,适当引入设计模式

wrk 压测工具

基于事件机制的高性能 HTTP 压力测试工具。

wrk 负载测试时可以运行在一个或者多核CPU,wrk 结合了可伸缩的事件通知系统 epoll 和 kqueue 等多线程设计思想。wrk 不仅能测试单条 URL,还能通过LuaJIT脚本实现对不同的 URL 和参数、请求内容进行测试。

wrk - a HTTP benchmarking tool

Linux 命令 —— ss 网络 Socket 统计工具

ss 用来获取系统 Socket 网络统计信息,英文 Socket Statistics 的缩写。功能与 netstat 类似,但 ss 能显示更多更详细的信息,并且更快更高效。

服务器的 Socket 连接数变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。

ss 快的秘诀在于,它利用到了 TCP 协议栈中 tcp_diagtcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,这就确保了 ss 的快捷高效。当然,如果你的系统中没有 tcp_diagss 也可以正常运行,只是效率会变得稍慢。(但仍然比 netstat 要快)

命令格式

1
2
ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]

MySQL 无故挂掉且启动失败的问题记录

刚发现测试机的数据库挂了,查看状态和启动均报错,信息大致如下:

1
2
3
4
5
[root@localhost ~]# service mysql status
MySQL is not running, but lock file (/var/lock/subsys/mysql[FAILED]

[root@localhost var]# service mysql start
Starting MySQL.The server quit without updating PID file (/usr/local/mysql/var/ecs-hb-hb1.pid).  [FAILED]

Git 工作流与规范

概述

Git 是什么

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

使用 XtraBackup 备份与恢复 MySQL

XtraBackup 是由 percona 开源的免费数据库热备份软件,它能对 InnoDB 和 XtraDB 存储引擎的数据库非阻塞地备份(对于 MyISAM 的备份同样需要加表锁)。mysqldump 备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump 备份就不太适合。

XtraBackup 优点

  • 备份速度快,物理备份可靠
  • 备份过程不会打断正在执行的事务(无需锁表)
  • 能够基于压缩等功能节约磁盘空间和流量
  • 自动备份校验
  • 还原速度快
  • 可以流传将备份传输到另外一台机器上
  • 在不增加服务器负载的情况备份数据

ELK Stack 资料

ELK Stack(ElasticSearch、Logstash、Kibana)

ELK关系图: ELK

ElasticSearch与关系型数据库对比:

Relational DB -> Databases -> Tables -> Rows -> Columns

ElasticSearch -> Indices -> Types -> Documents -> Fields

macOS 10.11+ SIP(rootless) 问题

macOS 10.11 开始加入了 System Integrity Protection,也就是 rootless 保护机制,使得很多系统目录无法进行修改,root 权限也进行了限制。但我们有些时候需要处理一些文件或软件,比如删除系统自带的 Apache、PHP 等,那我们需要临时关闭 SIP 机制。

解决办法

重启系统,按住Command + R,进入恢复模式,打开 Terminal 终端执行命令:

csrutil disable # 关闭SIP csrutil enable # 开启SIP