質問: node.jsでsocket.ioを使ってチャットを作っています。 メッセージはMySQLに保存するようにしてます。 JavaScriptの使用できないガラケーからも投稿できるようにする必要があったので、 ガラケーからの投稿は、テンポラリのMySQLテーブルに保存し、 node.jsのサーバーサイド側で、そのテーブルを1秒ごとにチェックし、 メッセージがあれば、socket.ioに接続しているユーザーにemitするようにしました。 しかし、socket.ioの接続人数や、ガラケーからの投稿数が多くなると、 1秒毎にチェックしている処理が遅延してしまいます。 ガラケーからの投稿をスマートに投稿できる良い方法があれば教えてください。 それではよろしくお願いします。 --------- node.js v0.6.8 socket.io 0.8.7 Centos 5.7 Apache 2.2.3 MySQL 5.5.20 PHP 5.3.3
回答: 全体構成を変えない方向で考えてみました・・・。 まず考えたのが、 もしもデータベースエンジンがMyISAMであればInnoDBに替えてみること。 移行作業はもっとも簡単でレンタルサーバーでも問題は無く移行できるはずです。 (別な手段としてSQLite3を併用するということも考えられますが、 MySQLのような柔軟性はないので微妙で避けたいですね) 効果的(こっちが本命)だと思われるのは、キャッシュにmemcachedを利用すること。 phpからのmemcached利用はかなり簡単になっていますし、 携帯からの入力キャッシュ程度であれば、 メモリが満杯になるような心配も多分ですがないでしょう。 (メモリが心配になるほどのアクセス数だと、 サーバーのハードウェア増強を考えないといけないでしょうから・・・)