タグ

ブックマーク / hirafoo.hatenablog.com (10)

  • httpdでcacheする apache編 - だるろぐ

    ※このエントリは微妙に自力ではありません webアプリを運用していて、静的・動的問わず 転送量がやばい 負荷がやばい そのせいで誰かがやばい などといったときがあることもあって、普通はmemcachedなりsquidなりを使うけど、 そこまでガッツリcacheする程ではない 又はめんどい 又はわざわざ他のミドルウェア導入せんでもhttpdだけである程度なら いいから早く何とかしろ などのケースが有ったり無かったり。 で、静的コンテンツをhttpdでさくっと対処する場合の話。 apacheだったらそこでmod_cache。 mod_cacheにはディスクに記憶するmod_disk_cacheとメモリに記憶するmod_mem_cacheがある。 静的コンテンツならmod_disk_cache、動的コンテンツ・リバースプロキシならmod_mem_cacheが定石らしい。 設定内容 例えば /im

    httpdでcacheする apache編 - だるろぐ
  • 3000req / sec と戦う - だるろぐ

    ざっくり概要 ピークで3000req / sec 毎分コンテンツ更新要求 コンテンツ更新の際は他所からデータをapi経由で受け取る コンテンツ更新にはTheSchwartzを使用 なコンテンツを色々してきたログ。 尚、ここに書く技術は大半が周囲のギークな方々にサポートしてもらったもので、僕自身が何かしたわけではない。残念すぎる。 構成 internet -> www(squid -> apache) -> app(memcached -> app) -> db フロントエンド wwwサーバがapacheとsquidを動かしている。apacheがリクエストを受け、squidのキャッシュが有ればそれを返し、無ければバックエンドのappサーバへproxy。 バックエンド appサーバがmemcachedとアプリを動かしている。 それぞれ冗長化してるけど、リクエスト数の割に台数は少ない。 技術があ

    3000req / sec と戦う - だるろぐ
  • log-binのデフォルト値を使わない - だるろぐ

    mysqlでレプリケーションするときは my.cnf の mysqld セクションに [mysqld] log-bin などと書いてバイナリログを吐く。 このように log-bin とだけ書いた場合、バイナリログの名前は5.1では HOSTNAME-bin.000001 のようなものになる。 --log-bin[=base_name] オプションで起動すると、mysqldで、データ更新に関わる SQL ステートメントのすべてをログ ファイルに書き込みます。base_name の値を指定しない場合、デフォルト名は、-bin を元にするホスト マシンの名前になります。 http://dev.mysql.com/doc/refman/5.1/ja/binary-log.html 5.0では mysqld-bin.000001 だったはず。 まあ、5.1(以降?)では、 log-bin とだけ書い

    log-binのデフォルト値を使わない - だるろぐ
    kwry
    kwry 2011/08/17
  • limit/offsetについて考える - だるろぐ

    LIMIT 20 OFFSET (:page - 1) * 20 みたいなクエリは :page に大きい値が入れれるように設計されてるとクエリに殺されるので、 WHERE key = :offset_for_next_page LIMIT 20 なクエリになるよう設計してほしい。 http://twitter.com/kamipo/status/56304601049210880 俺もボスに教わるまで知らなかったのだが、 mysql> select id from mentions order by id asc limit 100, 10;がすることは、 データを10個だけfetchする ではなく、 110個データをfetchして、先頭から100個捨てる だ。何を今更って感じですよねー知ったのは10ヶ月ほど前でした。俺の未熟さを思い知れ。 で。このようにlimitを付けてデータを取得する

    limit/offsetについて考える - だるろぐ
    kwry
    kwry 2011/04/09
  • Gearmanのサンプルを書いた - だるろぐ

    perlでキューイングするにはGearmanかTheSchwartzを用いるのが主流。 何となくGearmanのサンプルを書いた。 GitHub - hirafoo/queuing_sample 何はともあれモジュールを入れる。 # cpanm Gearman::Server Gearman::Client Gearman::Worker プロセス管理 キューイングを使う理由は「重い処理を裏に投げたい」もしくは「それ専用のプロセスが他に居て、そいつに仕事を投げて結果だけもらいたい」というのが主。 gearmanはキューイングはしてくれるが、プロセス管理まではしてくれないので自力でする必要がある。 キューイングするときは大抵重い処理だったり一気に沢山リクエスト来る場合なので、あらかじめforkしておくべし。 ここに素敵な例があるのでパクるといいと思います。僕はパクらせていただきました。 ht

    Gearmanのサンプルを書いた - だるろぐ
  • PlackとText::Xslateでケータイからtwitterするwebアプリを書いた - だるろぐ

    公式のケータイ用のサイトが重いし落ちてる事が多いのでさっさと書いた。 色々足りんけど自分用に使うにはこれで十分。 GitHub - hirafoo/filmoa: simple twitter web-app for mobile phone なおPlackとText::Xslate使ったとか書くと凄く聞こえるけど実際は触り程度にしか使ってない。 追記 Config::Pitでconsumer keyとかtwitterでoauthするときに必要な情報を管理してます。 当然そんなものリポジトリに同梱しないしサンプル書くのもめどいので、これを使いたい珍しい人はコード読んで自分で用意するよろし。簡単だから。 構成 psgiファイルが1個と、他はテンプレのファイルのみ。 何か軽くてさくっと使えるWAF無いかなーと探したけどいいのがsinatraしか無かった。 やりたい事は極わずかだったので、んじゃ

    PlackとText::Xslateでケータイからtwitterするwebアプリを書いた - だるろぐ
  • モバイルサイト作成tips - だるろぐ

    メモとかおさらいとか覚え書きとか。 キャリアごとの特徴 docomo css読めない、guid面倒、クッキーえない 今更すぎるお約束。新しい方の機種では改善されてるのもあるからってそれがどうした リダイレクトさせるとき、ステータスコードが301じゃないと「ページが移動しました」とかダイアログが出る 極たまにX-DCMGUIDを送信しない設定にしている人が居る。そういう人は大抵その事を忘却していて、見当違いの行動を起こす au 異常にキャッシュが強い cache-control, pragmaヘッダで色々指定して頑張る tableタグの入れ子が使えない そもこれがhtmlとして正しいのかは知らないけど softbank 唯一utf8で問題が無い。公式宣言するだけはある(してたっけ) docomoも公式にutf8使えますよーとか言ってた気もするが却下。理由は後述 とにかく電波が弱い 経験上、

    モバイルサイト作成tips - だるろぐ
    kwry
    kwry 2010/09/26
  • シャローコピーとディープコピー - だるろぐ

    データをコピーするとき リファレンスをコピーするだけで参照先は同じ コピーしたデータを変更するとコピー元も変更される 全く同じデータを複製する コピーしたデータに何をしようとコピー元に影響は及ぼさない の2通りがあってコードだと use strict; use warnings; use Data::Dumper;sub p {warn Dumper @_;my @c = caller;print STDERR " at $c[1]:$c[2]\n\n"} use Storable qw/dclone/; sub shallow { my $org = shift; my $cp = $org; $cp->{ho} = "_changed_"; } sub deep { my $org = shift; my $cp = dclone($org); $cp->{ho} = "_change

    シャローコピーとディープコピー - だるろぐ
    kwry
    kwry 2010/07/04
  • メソッドの一覧を取得する - だるろぐ

    任意のクラス・インスタンスで使えるメソッドを確認したいとき rubyだったら p Class.methods p instance.methods なんだけどperlでもやりてえぇーって叫んだら http://twitter.com/kamipo/status/13900909851 どらどら。 package Hoge; use strict; use warnings; sub new { bless {}, shift } sub hoge {} sub _fuga {} package main; use strict; use warnings; use Data::Dumper;sub p {warn Dumper @_;my @c = caller;print STDERR " at $c[1]:$c[2]\n\n"} use Class::Inspector; for (q

    メソッドの一覧を取得する - だるろぐ
    kwry
    kwry 2010/05/14
  • encode/decode より find_encoding のが速いのは知ってたけどここまでか - だるろぐ

    今更ネタが続く。 くりかえしdecode()とencode()する場合には、OOインターフェースを使った方が高速です。なぜなら(de|en)codeが文字コード名を解決する手間がなくなるからです。 404 Blog Not Found:perl - Encode 入門 と言われているのは知ってたけど実際は毎回 decode('euc-jp', $str) とかしてて実際どんくらい違うのかなーとふと思って use strict; use warnings; use Benchmark qw/:all/; use Encode qw/find_encoding encode decode/; my $euc = find_encoding('euc-jp'); my $utf = find_encoding('utf-8'); open my $fh, "<", "euc.txt"; my @

    encode/decode より find_encoding のが速いのは知ってたけどここまでか - だるろぐ
  • 1