[Dd]enzow(ill)? with DB and Python

DBとか資格とかPythonとかの話をつらつらと

Pythonでシンプルな文章の類似度判定をやってみた

会社の後輩に、社内のFAQの利用率を高めたいからなんとかしたいといわれ、自然言語の入力を受け付けて近いFAQのリンクを戻すコードを書いてみました。 後輩に説明しながらという点と元データも70件程度と少なかったことや、そもそも自分がちゃんと理解してない点もあったので、gensimやsklearn等は用いずになんちゃってBoWで実装しました。

続きを読む

ISUCON7で惨敗してきました

先日ISUCON7に出場してきました。個人としては初めての参加でしたが、結果としては最高得点でも予選通過の20万に遠く及ばない、7万程度と振るいませんでした。 反省の意味も込めて感想を残します。

敗因

今回の予選は初の複数台構成でした。そのため、nginxでのロードバランス等が大事だったと思います。加えて、N/W帯域の静的ファイル配信で以下にキャッシュを 効かせるかという点でもnginx力の求められるお題だったと思います。そんなわけで辛かった点。

  • チームメンバーがアプリよりでnginx力がそこまでだった(特にnginxを担当した自分がLastModfied等をうまく指定できてなかった)
  • wsgi_lineprofを使用する予定だったが、いれるとパフォーマンスの問題でベンチマーカが通らなかった

来年に向けて

nginxで、何か試したい!と思ったときにパッとできるだけの基礎力を強化したいと思います。あとプロファイラはきっと/dev/shmに書き出せばいけたのかなぁ・・・

WEBアプリケーションにおいて「あなたはどこにいますか?」(Flask, Bottleでのセッションデータの格納先)

WEBアプリケーションを作ると、ログインしているか?や買い物かごに何が入っているのか?といった状態を管理する必要があります。通常はセッション(session)データに格納しますが、そもそもこのセッションデータがどこにあるのかを調べました。

続きを読む

Redisの永続化とパフォーマンスのバランスを考えてみる(redis-pyを添えて)

ISUCONに関わって初めて真面目にRedisと向かい合ってます。RedisはオンメモリのKVSですが、デフォルトの設定では、再起動後もその内容が失われないように永続化されています。しかし、ISUCONというパフォーマンス重視の環境で永続化を考える場合、いくつか検討事項があるように思います。

続きを読む

Flaskで書かれたWEBアプリをBottleに書き換えるときの勘所

今週はISUCON7予選ですね。ここのところ毎回ですが今回もISUCON関連のネタです。ISUCONのPython実装はFlaskで作成されているケースが多いですが、これをBottleに書き換えるとパフォーマンスが上がるケースがあります。しかし書き換えにはいくつか注意点があります。

続きを読む

uWSGI caching frameworkを試してみる(PythonのWEBアプリケーションでのプロセス間情報共有)

今回はuWSGIのワーカプロセス間でキャッシュを共有できる、cache frameworkを試してみます。ISUCONをPythonで戦うとなると、大抵はRedisあたりだと思うのですが、それだと1プロセスで動作するGoやNode.jsに対してディスアドバンテージをもつことになるので、どうにかできないかというのが本記事の主題です。

続きを読む