このエントリーをはてなブックマークに追加

まべ☆てっくvol.3開催のお知らせ

風はまだまだ冷たいですが、心なしか春めいてきました。
みなさま、如何お過ごしでしょうか?

まべ☆てっく運営、大野です。

長らくお待たせ致しました!

まべ☆てっくvol.3

を開催致します!

テーマは「Unity®のお道具箱」。

ゲーム作りの根幹と表現しても過言ではないゲームエンジン。
数多あるゲームエンジンの中でも、
最もポピュラーであるUnity知識は、どれだけあっても困るものではございません!
まべ☆てっくで、一緒に知見を深めませんか?

ビールを飲みながらの交流会もございます!

【開催日時】
3/9(木)
18:30 受付開始
19:00 – 21:00 まべ☆てっく
21:00 – 22:00 ビアバッシュ、LT

【開催場所】
株式会社マーベラス
東京都品川区東品川四丁目12番8号
品川シーサイドイーストタワー 10階

【発表者】
松田裕太(弊社)
うちではこうやってます UI構築のルールとPlaymakerを使った画面遷移(仮)

森哲哉様(株式会社キッズスター)
Unityにおけるパッケージ管理(仮)

未定(ユニティ・テクノロジーズ・ジャパン合同会社)
モバイル環境でのアニメーション、アニメーターの話(仮)

※LT希望者募集中です。

【定員】
40名

【参加方法】
こちらにご登録下さい。
https://marv-tech.connpass.com/event/49980/

ぜひぜひ、お誘い合わせの上、ご参加下さいませ!
皆様にお会い出来ることを楽しみにしています。


まべ☆てっくVol.2に「大規模負荷試験時にやった事」で登壇致しました

株式会社マーベラスにてサーバーエンジニアをしております、
土井と申します。

今回、2016年11月24日(木)に弊社内で開催された
「まべ☆てっく vol.2」にて、登壇させていただきました。
ご参加下さった皆様には、御礼申し上げます。

発表したお題は「大規模負荷試験時にやった事」、
当日使用したスライドは、下記にてシェアしております。


「負荷試験に関する講習をして欲しい」とのお話をいただいたとき、当初は
・負荷試験とはなにか?
・負荷試験ツールはどう使うのか?
といった内容をお伝えしようかと考えておりましたが、それらは既に多くの他セッション・ウェブサイト様が情報を共有してくれておりますので、ここでしかお伝えできない事を発表した方が良さそうだと考え、弊社での実例をなるべくありのままシェアする事としました。

今回の講習の内容は、詳細な技術情報というよりは、実際に負荷試験のオペレーションを行った記録となっておりますので、
・負荷試験がどういう流れで行われるのかイメージが湧かない
・規模が大きい負荷試験をどう実施すれば良いか分からない
といった方には、有用な情報になったのではないかと思います。

負荷に耐え切れなくなりサービス継続不能、といった事態を無くすため、十分な負荷試験の実施は必須だと考えております。
今回の講習が、少しでもその手助けになれれば幸いです。


まべ☆てっく vol.2に「負荷テストを行う際に知っておきたいこと 初心者編」で登壇しました

マーベラスの森と申します。
先日は悪天候の中、わざわざご足労いただきまして誠に御礼申し上げます。

さて、「まべ☆てっく vol.2」にて講演に使用した資料が、公開されています。
http://www.slideshare.net/marv_tech/ss-69519657



今回は「負荷テストを行う際に知っておきたいこと 初心者編」と銘打ちまして、以下の3点について講演させていただきました。
・ストレージのシンプロビジョニングについて
・ロードバランサの負荷について
・jmeterのチューニングについて

「知っておきたいこと」というのは、裏を返せば「知らないと損をすること」とも言えます。
技術的にさほど難しい内容ではありませんので、インフラエンジニア/プログラマ問わず、軽い気持ちでご笑覧いただけますと何よりです。

引き続き、まべ☆てっくをよろしくお願いいたします。


まべ☆てっくvol.2 レポート

寒さが本格的になってきました。
みなさん、如何お過ごしでしょうか?

まべ☆てっく運営 大野です。

11月24日、「ゲームと負荷検証のエトセトラ」をテーマに開催致しました

まべ☆てっく vol.2

笑いあり、ぶっちゃけありの楽しい会となりました。
登壇者の皆様、参加者の皆様、本当にありがとうございました!

僭越ながら、不詳大野、まべ☆てっくvol.2のレポートさせて頂きます。

「負荷テスト初心者編ケーススタディ」
森正一 (株式会社マーベラス)

負荷テストの際、懸念となる問題を
あらかじめ解決するための「おまじない」や、
JMeterをガベージコレクションさせないチューニング方法まで
広く深くお話しして頂きました。
具体的なコマンドがいくつか挙げて頂きましたので、
業務ですぐに使えそうですね。

「大規模負荷試験時にやった事」
土井聡史 (株式会社マーベラス)

JMeterシナリオを、より「らしく」するために考えることや
負荷検証時につまづきやすいことなどをお話しして頂きました。
森さん同様、すぐにでも業務に使えそうな内容でした。
出席者の皆様、くれぐれも質疑応答の内容は内密に願います・・・

「クラウドファーストにおけるWEBアプリケーション負荷試験実践入門」
仲川 樽八様 (株式会社ゆめみ)

負荷試験の重要性や、
意味のある負荷試験を行なうための段取りをお話しして頂きました。
「どんな形でもいいので、必ず実施する」という基本姿勢の基、
負荷試験における哲学を学ばせて頂きました。
内容については、大変に濃密ですので、ここでは語り切ることが出来ません!
是非、資料をご覧下さい。

重ね重ね、登壇者の皆様、ありがとうございました!

まべ☆てっくで用いられた資料は、connpassに掲載しております。
資料を見直したい方、参加し損ねてしまった方、是非ご覧下さいませ。
https://marv-tech.connpass.com/event/42023/

また、まべ☆てっくの最新情報は、
Twitterにてお知らせ致します。
ハッシュタグ 「#marv_tech」と共にご活用下さい。
https://twitter.com/marv_tech

まべ☆てっく運営は、次の開催に向けて走り出しております。
vol.3の開催日は・・・2月ぐらいを目標にしております。
今回同様、濃密かつ楽しい会を目指しております。
皆様のご参加、楽しみにしています!


まべ☆てっくvol.2開催のお知らせ

大分風が冷たくなり、空気も乾燥してきました。

みなさま、如何お過ごしでしょうか?

まべ☆てっく運営、大野です。

まべ☆てっくvol.1から早1ヶ月・・・
いや、2ヶ月が過ぎようとしています。
もうそろそろ次を・・・ということで

まべ☆てっくvol.2

を開催致します!

テーマは「ゲームと負荷検証にまつわるエトセトラ」。

ゲーム界隈のエンジニアであれば、
絶対に考えなくてはいけないキーワード「負荷」。
その負荷について、アプリ視点からサーバ視点まで色々な話が聴けるかも!?
ビールを飲みながらの交流会もございます!

【開催日時】
11/24(木)
18:30 受付開始
19:00 – 21:00 まべ☆てっく
21:00 – 22:00 ビアバッシュ、LT

【開催場所】
株式会社マーベラス
東京都品川区東品川四丁目12番8号
品川シーサイドイーストタワー 10階

【発表者】
仲川 樽八様 (株式会社ゆめみ)
クラウドファーストにおけるWEBアプリケーション負荷試験実践入門

森正一(株式会社マーベラス)
負荷テスト初心者編ケーススタディ(仮)

土井聡史 (株式会社マーベラス)
大規模負荷試験時にやった事(仮)

※LT希望者募集中です。

【定員】
40名

【参加方法】
こちらにご登録下さい。
http://marv-tech.connpass.com/event/42023/

ぜひぜひ、お誘い合わせの上、ご参加下さいませ!
皆様にお会い出来ることを楽しみにしています。


まべ☆てっく vol.1に登壇しました。

はじめまして!司令官!
職業提督 マーベラスの大西と申します。

今回は、2016年9月8日(木)に弊社内で行われました「まべ☆てっく vol.1」にてスピーカーとして登壇しましたので、レポートをまとめたいと思います。

社内勉強会のスピーカーとしては何度か登壇はありましたが、社外の方をお呼びしての初めての勉強会な上、豪華な面々にもご登壇いただき、少々緊張しておりました。ですが、先日行われた結婚式での親族紹介の方が緊張したのは内緒です。負荷試験ができない環境だからかな?どんな状況においても負荷試験って大事ですね。

http://www.slideshare.net/KazuOnishi2/db-66455537
※何故かそのまま表示できないので、リンクでご容赦を・・・
※FireFoxで開く場合、壊れる場合がありますが、キャッシュ消せば表示されるっぽい↑

今回は、過去に実際に起きた負荷関連の問題の内、DBと負荷試験に関連した事例を2つほど紹介し、負荷試験は重要であるということと、負荷のほとんどはDB起因よりもソース起因の事の方が多いということを発表させていただきました。「生々しい話」と好評をいただいたようで、本当にありがとうございます。

次の登壇の機会があれば、『どうして練習艦 鹿島が最高でプリティなのか?』を1時間ほど話したいのですが、いろんな方面からお叱りを受けると思いますので、ちゃんとRDBの話か、MySQLクラスタの話か、ORM周りの怖い話ができればと思っております。


まべ☆てっくvol.1レポート

少しずつ風が心地良く、日差しが柔らかくなってきました。
みなさん、如何お過ごしでしょうか?

まべ☆てっく運営 大野です。

9月8日、「RDBの四方山話」をテーマに開催致しました

まべ☆てっく vol.1

お影様で好評を頂くことが出来ました。
登壇者の皆様、参加者の皆様、本当にありがとうございました!

僭越ながら、不詳大野、まべ☆てっくvol.1のレポートさせて頂きます。

 

菅野明洋(株式会社 Aiming)
DB設計を静的解析するツールを作ってみた

菅野さん自作のER図から、
DB設計の問題指摘を行うツールを紹介して頂きました。
現在、Githubにて公開中です。
https://github.com/asugeno/safer
https://github.com/asugeno/safer_binary
スペルミスからインデックスの不足まで、
包括的な問題を指摘して頂けるのは、
とてもありがたいです。

 

大西一嘉(株式会社マーベラス)
失敗事例にみるDBの負荷試験の重要性

弊社、大西による実際に現場であったこわーい話。
多くの方から「生々しい話」、と好評を頂きました。
後日、弊社大西からのレポートが公開される予定でございます。

 

瀬島 貴則(グリー株式会社)
binlog と Two-Phase Commit と Group Commit の話(仮)

MySQLのレプリケーション時の詳細な挙動を、
ソースコードレベルまで付き詰めたお話をして頂きました。
LTには、gdbを用いたデモまで・・・!
ちょこっとだけMySQLをわかったつもりでいた私ですが、
まだまだだということを痛感させて頂きました。

 

奥野 幹也(日本オラクル株式会社 MySQL Global Business Unit)
リレーショナルデータベースとの上手な付き合い方

「今日はゆるふわな話をします。」から始まったご講演。
なぜリレーショナルデータベースを使うのか、
どういう使い方をすれば良いのか。
基本的なことなのに、どこにも書いていないような心得をご教授頂きました。
DBを使い始めようとする方から、熟練者まで、
是非とも一読して頂きたい内容でした!

また、奥野さんからご本をいただきました。
https://www.amazon.co.jp/dp/4798147400/?tag=wotokobooks-22
こちらは、ビアバッシュにてじゃんけん大会を開催し、
勝ち抜いた方へ進呈させて頂きました。
奥野さん、ありがとうございました。

重ね重ね、登壇者の皆様、ありがとうございました!

まべ☆てっくで用いられた資料は、connpassにもまとめております。
資料を見直したい方、参加し損ねてしまった方、こちらをご参照下さい。
http://marv-tech.connpass.com/event/36743/

また、まべ☆てっくの最新情報は、
Twitterにてお知らせ致します。
ハッシュタグ 「#marv_tech」と共にご活用下さい。
https://twitter.com/marv_tech

まべ☆てっく運営は、次の開催に向けて走り出しております。
vol.2の開催日は・・・さすがにまだ決まっておりませんが、
今回同様、濃密かつ楽しい会を目指しております。
皆様のご参加、楽しみにしています!


第三話:マーベラスコネクトLite

ここは喫茶「まべこねこ」
閑古鳥が鳴くこの店ですることもない、まべコネたん
暇を持て余してるところに店長が急に話題を降ってきました

【祝】マーベラスコネクトLite【公開】
ここまで読んでおいてなんだけど…この二人何者?
まべコネたんよ、マーベラスコネクトLiteというものを知ってるかの? スマホじいじい_1
まべコネたん
まべコネたん_1
…Lite?
なにそれ?
(マーベラスコネクトは何だか聞き覚えある気がするけど)

やはり知らんかったか。

まぁ、そうじゃと思ったわい。

ふぉっふぉっふぉ。

スマホじいじい_1
まべコネたんまべコネたん_1 (…イラッ)
ふふ、仕方ないのぅ。
紹介してやってもよいんじゃが…。(チラッ
スマホじいじい_1
まべコネたんまべコネたん_1 いや、別にいいや。
…… スマホじいじい_1

………

スマホじいじい_1
まべコネたんまべコネたん_1 (暇を持て余す作業に戻る)

いやいやいや、紹介させてください!

お願いします~~~~~!!!

スマホじいじい_1
まべコネたんまべコネたん_1 最初からそういえば良いのに。 

まぁ…バイト代上げてくれるなら考えなくないけど。

本当じゃな!?

 

じゃあ、時給2000円から3000円にアップするから紹介させてもらっても…よいかのう?(チラッ

スマホじいじい_1
まべコネたんまべコネたん_1 …仕方ないなぁ~聞いてしんぜよう。
(万事オッケーだわ)
はは~~~~… 

それでは、紹介させてもらうぞい。

この度、マーベラスコネクトの一部機能がオープンソースとして公開!

それが…

マーベラスコネクトLite !!

GitHubで絶賛公開中じゃ!!

スマホじいじい_1
まべコネたんまべコネたん_1 おぉ~!!それは(きっと)すごいね!!!
(時給3000円の笑顔も公開) 

で、何ができるの?

『ユーザの登録・認証』や『引き継ぎ機能』などが構築できるぞい!

そのための『ユーザの登録・認証・取得』のAPIも実装されとるのじゃ。

他にもNGワードAPIもあるんじゃぞ。

スマホじいじい_1
まべコネたんまべコネたん_1 構築って難しそう!!
ふふ…構築手順や詳細な内容についてまとめられておる 

マーベラスコネクトLiteのWikiがあるのじゃ!

こちらには『ユーザの登録・認証』や『引き継ぎ機能』のシーケンス図などもあるので、参考しにしてもらえると嬉しいぞい。

スマホじいじい_1
まべコネたんまべコネたん_1 どんどん参考にしちゃって!!!
(何するかはわからないけど)
また、使ってみて気になるところや改善点などがあれば
どんどんIssuesを上げてもらって構わんぞい!!
スマホじいじい_1
まべコネたんまべコネたん_1 構いません!!
(Issuesって何?)
というわけで、生まれたばかりの 

マーベラスコネクトLite を…

スマホじいじい_1
まべコネたんまべコネたん_1

よろしくお願いします!!


まべ☆てっくvol.1開催のお知らせ

秋風が心地よい時節・・・
いや、ちょっと風が激し過ぎる気がしますが、
如何お過ごしでしょうか?

まべ☆てっく運営、大野です。

名乗りで名前が出てしまっていますが、

まべ☆てっく

を開催することになりました!

☆なんて付いてしまっていますが、
れっきとした、エンジニア向けの勉強会でございます。

テーマは「RDBの四方山話」。

RDBのあーんな噺やこーんな話が聞けちゃうかも!?
ビールを飲みながらの交流会もございます!

【開催日時】
9/8(木) 19:00-(受付開始18:30)

【開催場所】
株式会社マーベラス
東京都品川区東品川四丁目12番8号
品川シーサイドイーストタワー 10階

【発表者】
奥野 幹也様(日本オラクル株式会社 MySQL Global Business Unit)
リレーショナルデータベースとの上手な付き合い方

菅野明洋様(株式会社 Aiming)
DB設計を静的解析するツールを作ってみた

大西一嘉(株式会社マーベラス)
失敗事例にみるDBの負荷試験の重要性、他

※LT希望者募集中です。

【定員】
40名

【参加方法】
こちらにご登録下さい。
http://marv-tech.connpass.com/event/36743/

ぜひぜひ、お誘い合わせの上、ご参加下さいませ!
皆様にお会い出来ることを楽しみにしています。


PHP7を同時接続25,000/秒、webを36台ならべて負荷計測してみた

●PHP7を、商用環境で使いたい!

さて、PHP7が2015年12月に正式リリースされてから、早4か月が経ちました。
そろそろ安定してきたかな…、と思いつつも、まだまだ商用環境に導入するのは不安だと思います。

「本当にPHP7って高速なの?」
「PHP7って安定して動くの?」

いろいろな不安があるかと思います。
何しろ、PHP5からのメジャーバージョンアップですから。
普通に考えたら、まだ時期尚早かもしれません。

でも、やはり使いたい。
なにしろ、PHP5と比較して2倍の速度で動作するというのは、大きな魅力です。

そこで、「本当に商用環境で使えるか」という観点で、「リアルな」検証をしてみたいと思います。

●本当に使える、リアルな計測をしよう!

PHP7はPHP5に比べて、高速に動作するという触れ込みです。
実際に「だいぶ速くなったよ」といった検証結果が多く見受けられます。

しかし「これだ!」という検証内容がなかなか見つからないわけです…。

例えば、プログラミングで言うところのハローワールドレベルのものや、単純なコマンドをひたすらループさせたもの等々。
何でもそうですが、ベンチマークで計測した速度と実際に使ってみたときの速度って、結構違いますよね。

とにかくリアルなプログラムで計測したい。
そこで実際に弊社で開発中のアプリケーションを使って負荷試験をしてみました。
しかも、結構な高負荷をかけて。

「安定して動く」プログラムが「安定して動かなくなる」のは、負荷が上がってリソースがひっ迫したときや、並列性が上がったときではないでしょうか。
PHP7自体も勿論プログラムの集合体ですから、問題が発生するとすれば、そういったタイミングと推測できます。

さて、実際に負荷をかけてみました。

●高負荷で計測しよう!

※サーバ構成/ミドルウェアについては、開発中のアプリケーションということでぼかしてあります。お察しください…。

サーバ 台数 CPUコア数 メモリ(GB) 備考
web(APIサーバ) 36 8 16 内訳:34台がPHP5、2台がPHP7。
分散はLVSにより実現(分散方式は単純なラウンドロビン)
DB(master/slave) 3 40 120 -
KVS(memcached/redis) 3 4 16 -

 

ミドルウェア バージョン
php 7.0.4
apache 2.2系
MySQL 5.5系
memcached 1.4.16
redis 2系

 

その他
負荷ツールはjmeterを使用
jmeterからのアクセスは外部ネットワーク経由
jmeterを稼働させるクライアントマシンは25台
jmterシナリオは、実際のアプリケーション操作をシミュレートしている
jmeterはrampupやwaitを入れることで実行タイミングをずらしている(実際のユーザーのプレイ状態に近づけるため)
cactiを使用して各種サーバ負荷を計測
newrelicも使ってみました

 

●計測結果

レスポンスタイム

・newrelicによる計測結果です。
・jmeterからのリクエストを、平均して75msec程度で処理しています。内訳は、以下の通りです。

  • MySQLが10msec程度
  • Memcachedが数msec
  • Redisは一瞬
  • PHPは60msec強(但し、 DB処理等のウエイトも含まれる)

・この辺はアプリケーションの作りによるため、PHP5/PHP7の比較とは直接無関係ですが、アプリケーションの性質を理解するための参考値としてご参照ください。
・ちなみに当該グラフはPHP5のwebサーバにて取得しています。

スループット

・スループットです。webサーバ一台に対して、ページビューで約120/sec程度の負荷がかかっているとご理解ください。
・web台数が36台ですので、ページビューの総計は約4,320/secとなります。
・こちらのグラフも負荷の規模を理解するための参考値とお考えください。

※以下は、web02がPHP5のグラフ、web36がPHP7のグラフとなります。

CPU

・CPU負荷です。コアごとにグラフが分割されていますので100%が最大値となります。
・負荷は全CPUに綺麗に分散されている状態です(つまりどのコアも同程度の負荷)
・PHP5は80%程度のCPU使用率ですが、PHP7は40%程度となります。大きな差ですね。

Load Average

 

・ロードアベレージです。グラフの単位が異なっていることにご注意ください。
・PHP5は15~20程度ですが、PHP7は1以下です。
・jmeterからのリクエストはラウンドロビンにより分散していますので単純に比較はできませんが、同じ処理をするのであれば圧倒的にPHP7の方が軽いということは解ると思います。

コンテキストスイッチ

・コンテキストスイッチ(タスク切り替え)の回数です。
・実運用上あまり問題にならない数値ではありますが、PHP5に比べてPHP7の方が多いことが確認できます。
・並列性を高めることで高速化に寄与する仕組みなのかもしれませんが、掘り下げた調査はしていません(すいません)。

メモリ

・メモリ使用量です。
・一番下の茶色い部分が実メモリ使用量です。その上の肌色の層がキャッシュ、緑の層が空き領域です。
・PHP5が12Gbytes使用しているのに比べ、PHP7は8Gbytes程度です。CPU同様、大きな差ですね。
・PHP7の方がキャッシュ使用量が多いのも、良い意味で期待ができるところです。

参考までにDBのクエリ処理状況

・マスターDBが処理したクエリの状況です。内訳は以下となります。

  • 赤色…select
  • 黄色…insert
  • 緑…update
  • ピンク…その他も加えた総数

(他にdeleteなどもあるが見えない程度)
・秒間で20,000クエリ以上捌いているようなアプリケーションを動かしている、というところから色々と想像を膨らませていただければ幸いです。

その他

以下は、PHP5/PHP7で差が無いグラフです(PHP5のものだけ張ってあります)
トラフィック等は変わらなくて当たり前の数値ではありますが、あくまでも参考ということで…

●使っても大丈夫そう、でも…

負荷計測は約6時間続けましたが、特に大きな問題は発生していません。
安定して動作していたと言える結果でした。

性能面では、特にCPU、メモリについて大きな差が見受けられました。
明らかにPHP7の方が性能が良いと言って間違いないと思います。

今回のテストの場合、それぞれのwebサーバが処理しているページビューの数はほぼ同一ですので、全てのwebサーバをPHP5からPHP7に置き換えた場合、webサーバの台数がかなり削減できると推測されます。

ちなみにコードレベルでのPHP5->PHP7への移行コストは一般的に低いと言われているようですし、実際、今回の負荷計測に使用したアプリについては、かなり移行コストが低かったという事実もあります。

しかし問題は、言語仕様の違いよりもインタプリタ(ライブラリ)の違いにあるのではないでしょうか。

例えばインタプリタ(ライブラリ)内部のバグで、apacheがsegmentation faultで落ちたりすると…
いや、素直に落ちてくれればまだ良いのですが、中途半端に生き残ってクライアントからの接続をacceptできたりする状態だと、障害に繋がる可能性が高くなるわけです。
昔であればライブラリ内部をアセンブラレベルでトレースして、「メモリコピーのときにアライメントがずれて落ちてますよ今すぐ何とかしてくださいよこっちは寝てないんですよ」などとライブラリベンダに文句を付けたりしていたわけですが、
現在はそんな時代でもなく、さらに言えば、そんなことをするくらいならPHPなんか最初から使わないわけです。

つまりは、低コストで安全に使えないと意味がないのです。

PHP7が枯れるまでは大き目のバグfixや、セキュリティ問題の修正等によるアップデートが続くと予測されますので、運用コストの一部として十分に考慮する必要があります。
アップデートによるエンバグも怖いですから、いきなり本番環境のPHPをアップデートするわけにもいかないですしね…。

せっかくサーバ費用を削減しても、運用コストが増えてしまったのでは本末転倒です。
なかなか難しいですね…。