20161122 apache+tomcatを高負荷なbtoc環境で使う

16
Apache+Tomcat を をををを BtoC ををををを をををををををををををををを ををを

Upload: tsuyoshi-hisamatsu

Post on 16-Apr-2017

250 views

Category:

Engineering


5 download

TRANSCRIPT

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

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

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

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

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

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

• 事業仕分けを経て現職

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

私的なポリシー• 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 ...

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

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

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

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

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

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

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

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

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

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

今なんと・・・?

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

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

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

屈した

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

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

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

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

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

• スケール ajp <<< http

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

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

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

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

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 ・・・とはあるのだけども

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

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

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

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

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 しようか

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

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