php 5.3.x 使用 rrdcached 1.4.x

最近工作需要,碰到一个大量rrd写入的IO问题,决定使用rrdcached。

rrdcached官方文档:
中文翻译(感谢翻译者):

本次使用rrdtool的最新版,rrdtool-1.4.7
下载地址:


另外业务使用php来读写rrd文件,因此需要调用php的rrdtool extension,注意,一定要1.4.x版本以上,以前用的php_rrdtool.tar.gz和rrdtool.so是不支持rrdcached的。
最新版rrd.so源码下载:


rrd.so(原来叫rrdtool.so)的编译安装:

tar -zxvf rrd-1.1.0.tgz   cd rrd-1.1.0   /usr/local/php/bin/phpize    ln -s /usr/local/rrdtool/lib/librrd.so.4 /lib64/librrd.so.4       #不知是否我的人品问题,如果不做软连接,则会提示:   #error: rrd lib version seems older than 1.3.0, update to 1.3.0+   #configure会直接退出,检查config.log才发现conftest找不到librrd.so.4,故做软链接      ./configure --with-php-config=/usr/local/php/bin/php-config   make   cp modules/rrd.so /usr/lib  

然后在php.ini里填上extension=rrd.so
之后

[root@localhost rrd-1.1.0]# /usr/local/php/bin/php -i | grep rrd   rrd   rrd tool module => enabled   rrd tool module version => 1.1.0   rrdtool library version => 1.4.7 #看到这行则成功   RRDCACHED_ADDRESS => unix:/dev/shm/rrdcached.sock   PWD => /root/rrd-1.1.0   _SERVER["RRDCACHED_ADDRESS"] => unix:/dev/shm/rrdcached.sock   _SERVER["PWD"] => /root/rrd-1.1.0  

然后启动rrdcached,启动参数自己根据需要,参考官方文档进行调整
#注意对sock文件的权限进行修改,否则php将无法读取,web是我启动php的用户,你们改成自己的。

/usr/local/rrdtool/bin/rrdcached -l unix:/dev/shm/rrdcached.sock -s web -F -w 3600 -z 3600 -f 86400   chown web.web /dev/shm/rrdcached.sock  

随后添加环境变量

echo 'export RRDCACHED_ADDRESS="unix:/dev/shm/rrdcached.sock"' >> /etc/profile  

这样的话,在命令行中使用/usr/local/rrdtool/bin/rrdtool update命令时,数据就会先存储到rrdcached中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a6c8c39923fead1472049bf3a094b956.html