Common Lisp用コネクションプール「CL-DBI-Connection-Pool」を作りました

tamuraです。

最近、CL-DBIでデータベースをコネコネしていたのですが、本格的なWebアプリを作ろうとしたらコネクションプールが必要なのではないかと思い、コネクションプールを作りました。

https://github.com/tamurashingo/cl-dbi-connection-pool

コネクションプーリングとは、データベースにアクセスする時、アクセスのたびに接続(コネクション)を確立するのではなく、あらかじめ一定数のコネクションを確立しておき、それを使い回す手法。データベースアクセスの負荷を減らすために用いられる。 http://e-words.jp/w/%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0.html

続きを読む

ThymeleafでReverse Proxyを使った際にURLを書き換える

tamuraです。

ローカルで開発しているときは問題なかったのに、 本番環境は reverse proxy を使っているので、 Thymeleafが生成するURLが違ってしまう場合がある、ということがあります。

/xxxx/app に来たアクセスを Tomcat の /app に横流しする

<Location /xxxx/app/>
  ProxyPass ajp://localhost:8009/app/
  ProxyPassReverse ajp://localhost:8009/app/
  ProxyPassReverseCookiePath /app/ /xxxx/app/
</Location>

続きを読む

JSFでReverse Proxyを使った際にURLを書き換える

tamuraです。

ローカルで開発しているときは問題なかったのに、 本番環境は reverse proxy を使っているので、 JSFが生成するURLが違ってしまう場合がある、ということがあります。

/xxxx/app に来たアクセスを Tomcat の /app に横流しする

<Location /xxxx/app/>
  ProxyPass ajp://localhost:8009/app/
  ProxyPassReverse ajp://localhost:8009/app/
  ProxyPassReverseCookiePath /app/ /xxxx/app/
</Location>

続きを読む

memcachedクライアントではまった件(後編)

tamuraです。

spymemcachedでバックアップサーバを使わない方法についてまとめました。

結論

失敗時の動作を再接続しないに定義します。

MemcachedClient client = new MemcachedClient(new DefaultConnectionFactory() {
    @Override
    public FailureMode getFailureMode() {
        return Failure.Cancel;
    }
    }, AddrUtil.getAddresses("host1,host2,host3"));

String message = (String)client.get("key");

続きを読む

memcachedクライアントではまった件(前編)

tamuraです

memcachedでクラスタリングをしたところ、思わぬ事象にはまりました。

  • memcachedサーバが落ちてもクライアントはその次のサーバを使う
  • memcachedサーバが復活するともともとのサーバを使う

spymemcachedの検証を行っていてその事象が発生したので、「spymemcachedこのやろ~」と思い他の言語のmemcachedクライアントのソースを見てみると、他の言語のクライアントもそのような動きをしていました。

幸いにしてspymemcachedはこのバックアップサーバを使うという動きを止められます。

続きを読む