レンタルサーバーサービス Xserverに設置したPHPスクリプトと、それに連携するスマフォのアプリを作っています。
スマフォのアプリは、サーバー上のPHPを経由して、MySQLに読み書きします。
デフォルトでは、毎秒一回、PHPにデータ読み込みのリクエストを発行しており、
そのアンサーに「次はn秒後以降にリクエストを発行していいよ」というデータを含んでいます。
その「n秒後」をサーバー側の負荷に応じて決定したいのですが、方法が分からずに困っています。
具体的には、PHPスクリプトに対する毎分のアクセス数を記録し、そのアクセス数に応じて「n秒後」を決定したいと思っていますが、どのような方法がありますでしょうか?
現在は、上記の「n秒後」を求める部分以外はほぼ完成しています。
真面目にリアルタイムのアクセス数を取ろうとすると自分でアクセスカウンタのような物を作る事になるんじゃないでしょうか。
アクセス毎にデータベースに時刻を持つレコードを挿入&一定時間以降を消去して件数取得か一定件数以降を消去して最古の時刻を得るか。
ただ、面倒だしちょっと負荷が気になりますので、代替手段を考えても良いかもしれません。
そもそもがサーバ負荷が上がるのを防ぐためですので、代替手段は何がネックになるかによるでしょう。
データベースサーバがネックになるならSHOW STATUSで見てみるか。
http://dev.mysql.com/doc/refman/5.1/ja/show-status.html
http://dev.mysql.com/doc/refman/5.1/ja/server-status-variables.html
Bytes_sent, Connections, Questions, Threads_connectedあたりが指標になるでしょうか。
取得が簡単なのはsys_getloadavgによるロードアベレージ。
http://jp1.php.net/manual/ja/function.sys-getloadavg.php
もしくは/proc/meminfoで空きメモリを見てみるか。
http://www.itmedia.co.jp/enterprise/articles/0803/04/news006_2.html
http://wiki.bit-hive.com/linuxkernelmemo/pg/proc%2Fmeminfo
あと、本当は多分server-status使えると良いのかも知れない。
http://www.arcetri.astro.it/manual/ja/mod/mod_status.html
http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3U1720/EU170055.HTM
ReqPerSecとかIdleWorkersあたり?
コメント(0件)