首页 » 作者存档: 信海龙 ( 第 9 页 )

Author Archives: 信海龙

/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分左右回滚。从上图, ...

一个echo引起的进程崩溃

 

最近在编写后台程序时遇到一个问题。发现后台程序总是莫名其妙的die掉。经排查,发现罪魁祸首是一个echo。 案情重现: 1.ssh登陆服务器 2.新建一个php文件test.php,代码如下: <?php sleep(50); echo "aaa\n"; file_put_contents("/tmp/test.txt",time()); ?> 3.用以下命令执行test.php程 ...

linux中使用valgrind检测内存泄露

 

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

【IPC通信】基于管道的popen和pclose函数

 

标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。 popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。下在给出popen、pclose的定 ...

linux中c语言errno的使用

 

在linux中使用c语言编程时,errno是个很有用的动动。他可以把最后一次调用c的方法的错误代码保留。但是如果最后一次成功的调用c的方法,errno不会改变。因此,只有在c语言函数返回值异常时,再检测errno。 errno会返回一个数字,每个数字代表一个错误类型。详细的可以查看头文件。/usr/include/asm/errno.h 如何把errno ...

linux man page 命令手册

 

Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。 Linux的man手册共有以下几个章节: 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually foun ...