2位でした。ありがとうございます。お騒がせしました。
やったことはこれだけ
- varnish導入
- unicorn導入
varnish
default.vclはこんな感じ。 ポイントは、vcl_fetchの先頭にあるbanですな。
backend default {
.host = "127.0.0.1";
.port = "3001";
}
sub vcl_recv {
if (req.restarts == 0) {
if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For =
req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}
if (req.request != "GET" &&
req.request != "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS" &&
req.request != "DELETE") {
return (pipe);
}
if (req.request != "GET" && req.request != "HEAD") {
return (pass);
}
if (req.http.Authorization || req.http.Cookie) {
return (lookup);
}
return (lookup);
}
sub vcl_pipe {
return (pipe);
}
sub vcl_pass {
return (pass);
}
sub vcl_hash {
hash_data(req.url);
return (hash);
}
sub vcl_hit {
return (deliver);
}
sub vcl_miss {
return (fetch);
}
sub vcl_fetch {
if (req.request == "POST") {
ban("req.url == /blog/posts/tuningathon");
return (deliver);
}
set beresp.ttl = 10 s;
if (beresp.http.Pragma ~ "no-cache"
|| req.http.Cache-Control ~ "no-cache"
|| req.http.Cache-Control ~ "private"
) {
return (hit_for_pass);
}
if (beresp.ttl <= 0s ||
beresp.http.Set-Cookie ||
beresp.http.Vary == "*") {
set beresp.ttl = 10 s;
return (hit_for_pass);
}
return (deliver);
}
sub vcl_deliver {
return (deliver);
}
sub vcl_init {
return (ok);
}
sub vcl_fini {
return (ok);
}
varnishはyumでインストールできる3.0.2を使用。
/etc/sysconfig/varnish
を編集して待ち受けポートとストレージを指定して起動するだけ。
varnish入れるだけで1000越えます。
unicorn
unicornのconfigはこんな感じ
worker_processes 4
stderr_path "/dev/null"
stdout_path "/dev/null"
こんな感じで起動します。
unicorn_rails -p 3001 -D -c /home/ec2-user/unicorn.conf
@tnmt @ijin 先生に聞いたところ、rubyのversion upやgc設定が効くもよう。
しらなんだ。4文字ID恐るべし。
まとめ
rubyまじわからん。EnterpriseEditionとかあるの知らなかったよ(´・ω・`)
そんな私がCTOをしている会社はインフラエンジニア募集中です。 チューニング力つけたい方、経験積みたい方、ビシビシしごかれたいかた、こちらからご連絡ください! →http://heartbeats.jp/recruit/
See also
- #isucon チーム「ウー馬場ーイー222」でISUCON13本選に参加し30位になりました
- 「SRE≠インフラなんだけどもう誤解されちゃってるから、DevOps新実装としてSite Production Engineeringはいかがでしょう?」でJAWS DAYS 2022に登壇しました #jawsdays #jawsug
- #isucon チーム「シン・ウー馬場ーイー2」でISUCON12本選に進出し12位になりました
- #isucon チーム「シン・ウー馬場ーイー2」でISUCON12予選に参加し2位で予選突破しました
- 「非ITの事業会社にSREと言わずにSREを持ち込んだ」SRE NEXT 2022で登壇しました #srenext