はじめに
Graphite環境のパフォーマンス改善のために、carbon-cacheにpypyを使ってみたいと思います。(pypyとは?)
インストール
今回の環境はCentOS 6です。ビルドしても良いかと思いましたが、epelにパッケージがありました。必要なのは以下の2つ。yum installもしくは、rpm -ivh しましょう。
pypy-2.0.2-2.el6.x86_64.rpm
pypy-libs-2.0.2-2.el6.x86_64.rpm
carbon-cacheの再起動
単に再起動するだけですが、PYTHONPATHを通す必要があります。
$ export PYTHONPATH=/usr/lib64/python2.6/site-packages
$ pypy
Python 2.7.3 (5acfe049a5b0cd0de158f62553a98f5ef364fd29, Aug 09 2016, 09:31:00)
[PyPy 2.0.2 with GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys
>>>> from pprint import pprint
>>>> pprint(sys.path)
['',
'/usr/lib64/python2.6/site-packages',
'/usr/lib64/pypy-2.0.2/lib_pypy/__extensions__',
'/usr/lib64/pypy-2.0.2/lib_pypy',
'/usr/lib64/pypy-2.0.2/lib-python/2.7',
'/usr/lib64/pypy-2.0.2/lib-python/2.7/lib-tk',
'/usr/lib64/pypy-2.0.2/lib-python/2.7/plat-linux2',
'/usr/lib64/pypy-2.0.2/site-packages']
>>>>
PATHが通ることを確認したら、再起動します。
python carbon-cache.py stop
pypy carbon-cache.py start
virtualenv環境で起動すると、zope.interface が import できないとエラーをはいて起動できませんでした。
調べてみると、zopeがimportできないことに起因するようで、単に__init__.py
が存在しないだけ(?)でした。
同様のエラーが出る場合は、以下のようにするとよいでしょう。
touch virtualenv/graphite/lib/python2.6/site-packages/zope/__init__.py
結果
リリース前後で比較して、メモリの使用率はあがりましたが、cpu使用率、平均更新時間は下がりました。
この環境は、それほど高負荷ではなく、1分/5分/15分ごとに数千メトリクスの更新で、平均すると1分で1000メトリクス程度の更新ですが、
微妙に改善していることがわかりました。この状態でしばらく運用してみたいと思います。