怎样用core文件调试你的linux程序?

 

core dump 文件对于诊断linux中程序的问题非常有用。当程序异常退出的时候,可能会生成core文件。如,程序写一个不属于他的内存,操作系统出于保护,会发信号给程序,程序可能会因此而退出,退出的时候可能会生成core文件。我们可以通过分析core文件,找出程序中那里有内存问题。这篇文章主要是阐述生成core文件需要做 ...

linux下cp,mv进行动态库覆盖问题分析

 

本文是引用@五牧同学在阿里ata上发表的文章。感觉分析的比较透彻,分享给大家。 问题的起因在来源于周会上钟老板提出的一个问题,cp新的so文件替换老的so,会导致程序core掉。这个问题引起了大家的热烈讨论,其中提及了的名词有inode,dentry,buserror等,比较混乱,由于功力浅薄,当时也没有十分清楚引起core掉的原因 ...

php中如何设置mysql查询读取数据的超时时间

 

现象: php能通过代理正常连接到mysql。但是,执行query后,一直等待,没有任何数据返回。 结果导致php-fpm进程全部阻塞在读取数据的地方。不能处理其他正常请求。 解决方法: 可以通过设置mysql查杀的超时时间来解决这个问题。 第一种设置mysql查询超时时间的方法是使用mysqlnd。 关于msyqlnd的介绍,大家可以看下这篇 ...

PHP MysqlND 简介

 

简介: mysql native driver 作为php的扩展,取代了libmysqlclient ,为php在 mysql ,mysqli pdomysql 上 提供mysql 的支持。 安装: ./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd ./configure —enable-mysqlnd 优点: 1、mysqlnd更容易编译; 因为它是php源码树的一个组成部分 2 ...

小心,apc可能导致php-fpm罢工!

 

最近访问网站,发现出现了502错误。一般出现502错误,都是php-fpm 进程处理请求时出现异常导致的。 首先,查看了php-fpm 的进程数。发现php-fpm的进程数已经到达了php-fpm.conf中设置的最大值。最近流量没有大的变动,这么多php-fpm进程,肯定有问题。 ​然后,用pstack命令查看这些php-fpm进程都在干啥。 ​[hailong.x ...

/var/spool/clientmqueue目录文件清理

 

今天对服务器磁盘占用情况进行检查时发现有台服务器的/var 目录已经占用90%。需要清理。 使用 sudo du -m --max-depth=2 /var/ 命令查看/var/目录的磁盘占用情况。命令在检查 /var/spool/clientmqueue 时出现了卡死的情况。 可以肯定 /var/spool/clientmqueue 这个目录文件很多了,必须清理了。 如果单纯的用rm 命令删 ...

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

善用php-fpm的慢执行日志slow log,分析php性能问题

 

众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题。作为mysql的好搭档,php也有这样的功能。如果你使用php-fpm来管理php的话,你可以通过如下选项开启。 PHP 5.3.3 之前设置如下: <value name="request_slowlog_timeout">5s</value> <value name="slowlog">log ...

安装tclip的php扩展

 

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

注意!PHP memcached扩展默认配置下无法自动failover

 

最近项目中用到PHP连接Memcache的场景。这个场景对于PHP开发者很常见。但就是这么常见的一个场景,带来了意想不到的一个问题。 我这边的php memcached扩展版本是: memcached MEMCACHED SUPPORT ENABLED Version 2.1.0 libmemcached version 1.0.8 Session support yes igbinary support ...

数据库分表后,并发环境下,生成全局id生成的几种方式

 

最近一个项目由于数据量变大,需要进行数据分表。数据存储在淘宝的tddl上。分表后,原先的自增id就不能使用了。tddl对java支持很好,分表后无需考虑全局id的问题。但是这个项目使用的是php进行开发,必须自己生成全局id。以下列出几种分表方案,仅当抛砖引玉。 方法1:使用CAS(compare and swap) 其实这里并不是严格 ...

小心!高效率的sql查询,它也会导致网站响应变慢

 

最近一个项目进行2.0版本升级。2.0版本部署到所有的线上机器后,发现网站访问速度变的很慢。为了不影响用户体验,紧急进行版本回滚,然后进行问题查找。 分析 首先查看php的日志,没有发现有用的线索。 然后看了下mysql db的监控情况。如下图: 2.0版本是在20点左右上线,20点20分左右回滚。从上图, ...