centos6.8 メモリ使用量の考察

メモリ解放について調べていて知ったことについて。
以下サイトからの引用。

Linux のメモリキャッシュをクリアする

Linux の top コマンドや free コマンドで表示される cached は、勝手にどんどん増えていきます。free がなくなるとこの cached が少しずつ解放されて使われます。
cached も buffers も空きメモリの一部ですので、これらが溜まっているからといって無理やり解放させる必要は通常はありません。
cached を溜めているのはパフォーマンスのためなので、解放させると通常使用時のパフォーマンスが落ちます。逆にこれを解放しておかないと、パフォーマンスの測定などで、正しい計測ができません。

linuxのキャッシュには、ページキャッシュとSlab(dentry:ディレクトリエントリやinodeのキャッシュ)キャッシュが存在する。キャッシュをクリアしたい場合、以下のコマンドを実行すればよい。

sync
echo 3 > /proc/sys/vm/drop_caches

キャッシュの状況についてはfreeコマンドが分かりやすい(-mでMB表示)

free -m

mysqlとhttpを動かしている状況で900MBくらいメモリを使用している状況で以下の3つのコマンドを実行してみたら、メモリ使用量が200MBまで減ったw

service httpd restart
service mysqld restart
echo 3 > /proc/sys/vm/drop_caches

やっぱりmysqlとhttp(php)の2つがメモリを食う筆頭なんだよなあ。サーバー組む時も、この2つを別サーバーに分けるのはやっぱり理にかなっているってことだな。

参考サイト
Linuxでページキャッシュを確認・解放してみた - Qiita
【Linux】メモリのキャッシュをクリアする at softelメモ
Linux:キャッシュを開放する(/proc/sys/vm/drop_caches) - ログってなんぼ

低予算から始めるFX
低予算(1000通貨)で比較 | FX比較 低予算から始めるFXランキング 初心者の外為入門

cakephp mysql 結局update文を繰り返すともりもりメモリが消費されていく件

cakephpのバッチの中で、saveメソッドでupdateを繰り返すと、どんどんメモリが消費されていく。

んで、色々試したけど結局解決出来なかった。素のphp+mysql_queryメソッドでも同じ結果だった。

php内であればガベージコレクタが働くけど、前のcurlmysqlといった外部のリソースになると、php側ではどうすることも出来ない。

phpが終了すれば解放されるから、一度に大量のクエリを発行しないように工夫するしかないんだろう。

FXを始めるのにおススメサイト
低予算(1000通貨)で比較 | FX比較 低予算から始めるFXランキング 初心者の外為入門

centos6.8 curlがメモリリークしていたのでバージョンアップした件

あるphpを実行していたらどんどんメモリが減っていって数日悩んでいたんだけど、やっと原因が分かったわ。php => mws sdk => curl っていう流れでcurlを実行していて、色んなサイトも参考したところ、まさかのcurlメモリリークする原因だった。そんでcurlのバージョンアップしてみたら見事にメモリリークが解消された。単純にyumだと更新出来なかったので以下の手順で更新した。毎度のことだけど、参考サイトに感謝。

curl -V
>curl 7.19.7

cd /usr/local/src/
wget http://mirror.city-fan.org/ftp/contrib/sysutils/Mirroring/curl-7.64.1-2.0.cf.rhel6.src.rpm

rpmbuild --rebuild curl-7.64.1-2.0.cf.rhel6.src.rpm
>失敗したので以下適当に入れた物

yum install rpm-build
yum install gcc
yum install openldap-devel libmetalink-devel libnghttp2-devel nghttp2 perl-interpreter gnutls-utils

yum --enablerepo=epel install libmetalink-devel
yum --enablerepo=epel install libnghttp2-devel
yum --enablerepo=epel install nghttp2
yum --enablerepo=epel install perl-interpreter
yum install perl-Compress-Zlib

rpmbuild --rebuild curl-7.64.1-2.0.cf.rhel6.src.rpm
>再実行
>10-20分くらいかかる

cd
rpm -Uvh rpmbuild/RPMS/x86_64/curl-7.64.1-2.0.cf.rhel6.x86_64.rpm rpmbuild/RPMS/x86_64/libcurl-7.64.1-2.0.cf.rhel6.x86_64.rpm rpmbuild/RPMS/x86_64/libcurl-devel-7.64.1-2.0.cf.rhel6.x86_64.rpm

curl -V
>curl 7.64.1

参考サイト
https://mome-n.com/curl-7-19-7%E3%81%A7%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%AF%E3%81%99%E3%82%8B/
https://qiita.com/comefigo/items/6f2fe9c086550835c033
http://s-tajima.hateblo.jp/entry/2015/02/20/233615
https://dev.classmethod.jp/cloud/aws/dentry-cache/
https://qiita.com/KensukeSakakibara/items/6d1d59848d5b179f77c5

FXを始めるのにおススメサイト
低予算(1000通貨)で比較 | FX比較 低予算から始めるFXランキング 初心者の外為入門

php プログラムがメモリリークしているかチェックする方法

vmstatのfreeを見れば良い。メモリリークしていればfreeがどんどん減っていく。(目的以外のプログラムが動いていないか(cronとかで)注意。)

[root]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0  99576  29064 300112    0    0   171   215   85  135  3  0 95  2  0
 0  0      0  99452  29128 300116    0    0     0   876  139  381  2  1 48 48  0
 0  0      0  99452  29136 300116    0    0     0    28   47   75  1  0 99  0  0
 0  0      0  99328  29200 300120    0    0     4   528  133  331  2  0 96  2  0
 0  0      0  99328  29208 300120    0    0     0    28   57   76  0  0 100  0  0
 0  0      0  99328  29256 300124    0    0     0   124  107  284  2  0 97  1  0
 0  0      0  99204  29320 300128    0    0     4   880  157  370  3  0 48 48  0
 0  0      0  99204  29328 300128    0    0     0    28   55   75  1  1 97  1  0
 0  0      0  99080  29376 300136    0    0     4   116  101  275  2  0 97  1  0
 0  0      0  99080  29440 300148    0    0     0   984  152  390  2  0 46 52  0
 0  0      0  99080  29456 300136    0    0     0    44   48   92  0  0 100  0  0
 0  0      0  98956  29512 300144    0    0     4   512  133  318  2  0 96  2  0

FXを始めるのにおススメサイト
低予算(1000通貨)で比較 | FX比較 低予算から始めるFXランキング 初心者の外為入門

mysql5.6 メモリ使用量が増加した時の対策

ここ最近EC2で扱うデータ量が増えてきたせいなのか、いつの間にかmysqlのメモリ消費が50%前後(約450M)まで増えていて、それが原因なのか分からんけど、insertが頻繁にエラーになるようになって何とかしないと、と思った時の対策。

table_definition_cache=400

my.cnfにこれ追加しただけで10%前後まで減ったw。しばらく様子見

参考サイト
メモリ食い過ぎてたのは、mysqlの設定が原因だった - Qiita
MySQL 5.6 におけるパフォーマンススキーマの使用メモリー量 | スマートスタイル TECH BLOG
MySQLでtable_definition_cacheの値を変更する | 田舎に住みたいエンジニアの日記
MySQL5.6がやたらとメモリを消費する問題 - ワシはワシが育てる
MySQL5.6でメモリ使用量が肥大化したときの対処 | ハックノート

FXを始めるのにおススメサイト
低予算(1000通貨)で比較 | FX比較 低予算から始めるFXランキング 初心者の外為入門

レーザープリンター Canon LBP251 無線LANでプリントアウトが出来なかった件のメモ

付属のCDでドライバをインストールしようとするも、プリンタの検索でプリンタが見つからずにインストールが出来なかった件の対応

1. 標準セットアップではなくカスタムセットアップを選択
2. 以下のポートを追加

ポートの種類:Standard TCP/IP Port
IPアドレス:プリンタのIPアドレス(メニューから確認可能)
ポート名:適当(LBP251とか)

そうするとRaw <ポート番号> でポートが追加されるのでそいつでインストールすればok
なおRawポートはWindowsからプリンタを操作するためのポート

※各ポートの詳細について
<LPD>/<RAW>/<WSDマルチキャスト探索> 印刷プロトコルWebサービスの設定をする
<HTTP> HTTP通信を無効にする
SNMPSNMPで監視/制御する
マルチキャスト探索> デバイス管理ソフトウェアの設定をする

※各ポートのポート番号もプリンタのメニューから確認可能

マイナスも虚数も自然界には存在しない便宜上の概念

今日読んだ面白い記事2つ

マイナスについて
https://www.inc-reliance.jp/science/53976

虚数について
https://atarimae.biz/archives/500

低予算でのおすすめのFX口座はこちら。
http://s2fx.com/ranking/856.html

安全靴を買うならこちら。
http://azmaya.jp