20161122 Apache+Tomcatを高負荷なBtoC環境で使う

Preview:

Citation preview

Apache+Tomcat を高負荷な BtoC 環境で使う株式会社ネットマーケティング 久松剛

自己紹介• 管理本部インフラチーム シニアマネージャー 久松 剛• Omiai のインフラ担当として入社• 全ての IT インフラの責任者

• 慶應義塾大学大学院政策メディア研究科博士• 2000 年大学 1 年次より村井純教授に師事• 在学時のテーマ

• インターネットを用いた高画質リアルタイム動画配信• 20 代の大半を UDP の上で過ごす

• 事業仕分けを経て現職

私的なポリシー• 2000 年から様々な技術的宗教戦争を見てきた• Windows vs MacOS• Linux vs *BSD• FreeBSD vs NetBSD vs OpenBSD• Linux ディストリビューション• vi vs emacs• PowerPoint vs Keynote vs PDF vs magicpoint とかとか• iPhone vs Android ...

• 争いは無益である• 争っている間、仕事は進まない

私的スタンス• 最後まで面倒を見てくれるならなんでもどうぞ• 非暴力非服従

Java になった経緯• 旧 API は PHP だった• caution / warnig を無視するでない• コンパイル言語待望論

• 実績のある固い言語が良い•半数以上が SIer出身、言語経験がある⇒Java + 自作フレームワーク インフラは引き続き AWS EC2

ある時アマゾンの人に聞いてみたQ. 御社が把握している• Java 言語を採用している• それなりのトラフィックが乗っている• BtoC サービスはありますか?

A. うーん、 B さんくらいですかねぇ(一社のみ返ってきた)

今なんと・・・?

そしてサービスインを迎える

屈した

一斉リリース良くない• 得体のしれない実績のないプログラムは段階的リリースを• 何が悪いのかさっぱり分からん• 様子を見ながら段階リリースを気長に・・・

• 調整ポイントはかなり多い• Apache と Tomcat で PHP の 2 倍以上面倒くさい複雑

ajp は速やかに http へ• AH00940: AJP: disabled connection for (localhost)• ある一定を超えるとやたらと出てくる• http に変更することでエラーがなくなる

• スケール ajp <<< http

Tomcat まわり• context.xml• minIdle• maxidle• maxActive• maxWait• timeBetweenEvictionRunsMillis

• 死活監視スレッドの起動間隔

Kernel 、そして IPv6 ・・・• sysctl• kernel.threads-max• fs.file-max • net.ipv4.ip_local_port_range

• IPv6• Facebook API との繋ぎこみで CLOSE_WAIT などが詰まる• /proc/sys/net/ipv6/* Variables:• IPv6 has no global variables such as tcp_*. tcp_*

settings under ipv4/ also apply to IPv6 [XXX?].• https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ・・・とはあるのだけども

よく分かりすぎて痛かったこと

出展: http://ascii.jp/elem/000/000/897/897175/

TCP との闘い• Tomcat の Connection Pool が厄介• TCP Connection Status (Zabbix) とのにらめっこ

• ESTABLISHED• CLOSE_WAIT

• sysctl• net.ipv4.tcp_keepalive_intvl• net.ipv4.tcp_keepalive_probes• net.ipv4.tcp_keepalive_time

• “ 自作フレームワーク”• socket は close しようか

まとめ• 動かなくはない• 慣れない言語・新しい境地への挑戦は段階リリースするべき• エンジニアの出身レイヤの違いも加味すること• プログラマ、インフラエンジニア問わず