一年前のGoCon Kyotoの発表資料をどこにも載せていなかったので、書いておきます。 Golangを使ったDB用負荷テストツールの開発 by @winebarrel github.com
はじめに Rustを使っているとすべてをRustで書きたい欲に駆られることがあります。 たとえば負荷試験ツールもRustで書きたい、みたいなことがあったりします。 ありがたいことにRustではGooseという負荷テストフレームワークがあり、これを使えば負荷テストをRustで実装できます。 ちなみに、GooseはRust Foundationのメンバーであるtag1が開発しているので安心感があります。[1] 本記事はGooseについて基本的・応用的な使い方などについて紹介していきます。 Gooseとは GooseはPython製の負荷テストツールであるLocustにインスパイアされたRust製の負荷テストフレームワークです。 Locustと比べて、約11倍ほどのトラフィックを生成でき、CPUコアを可能な限り使用してくれます。[2] またLocustと違い、フレームワークなのでビルドしたバイナ
みなさん、こんにちは。ソリューションアーキテクトの馬渕です。AWS 入社前は SIer で性能試験・性能問題解決に特化した部署におり、さまざまな業種のお客様のシステムに対する支援を実施していました。 さて、みなさんは AWS ソリューションライブラリ をご存知でしょうか。AWS ソリューションライブラリは、世界中のユーザーが直面する一般的な問題の解決策を提供するものとなっています。AWS CloudFormation のテンプレートと導入手順が用意されているため、すぐにデプロイしてお客様の課題に対応できます。また、アーキテクチャ図やその説明、コスト試算なども用意されています。 私がご紹介したいのが、その中でも人気のソリューションの一つである 分散負荷テスト ソリューションです。このソリューションは、負荷テストに必要な負荷クライアントを必要なタイミングで必要量だけ立ち上げて負荷掛けを実行し、
この記事は 面白法人グループ Advent Calendar 2022 の15日目の記事です。 こんにちは、カヤックボンドの松本です。 今回は弊社の技術顧問をご担当いただいている、ドレッドノート株式会社の佐々木様よりご寄稿いただいた記事となります! みなさん、はじめまして! 主にパフォーマンスチューニングや検証用のボット開発等を行っているドレッドノート株式会社の佐々木と申します。 この度、カヤックグループの皆様より Advent Calendar 2022 に寄稿する機会を頂戴しましたので、2022年12月時点の方法を元に負荷試験とモダンなOSSツールについて書いてみたいと思います。 負荷試験の重要性 突然ですが、みなさんが関わっている案件で負荷試験を行っていますか? サービス開始前・提供中、どちらであっても負荷のかけ方によって様々な情報を得ることができます。 現状の性能・台数・実装で、ど
多くのユーザーさまに安心して遊んでもらえる新作ゲームを提供するためのコロプラの取り組みを紹介する「大規模モバイルゲームのローンチを支える技術」。ここでサーバー基盤グループのごましお氏が登壇。ここからは、「複数人のプレイログを収集する」フェーズから「規模を増やしながら繰り返す」フェーズまでについて話します。前回はこちらから。 複数人のプレイログを収集する ごましお氏:続いては、複数人のプレイログを収集するフェーズです。例えば、開発チーム内でのプレイ会とか社内プレイ会みたいな、なるべく大人数がプレイするタイミングでログを収集します。 自分でプレイしてログを収集するのとは目的が違っています。ここでは、1ユーザーあたりのRPSを測定すること、それからAPI呼び出しの全体の割合を把握することを目標とします。なるべく多くの人数でプレイしたログが収集できると、それだけ精度の高い情報が得られて、以降の試験
マイクロソフトはクラウド上で大規模な負荷テストを行えるフルマネージドな負荷テストサービス「Azure Load Testing」を正式サービスとして提供開始したことを明らかにしました。 外部に公開する予定のあるクラウドサービスでは、想定するユーザー数に対して適切なコンピューティングリソースが割り当てられているか、挙動に問題はないか、性能上の問題がある場合にはボトルネックがどこにあるか、などを本番開始前に調査する必要があります。 そのためには、あたかも実際に多数のユーザーがアクセスしてくるのと同じような状況を作り出さなくてはなりません。 Azure Load Testingは、そうした負荷の作成を作り出し、容易にテストできるようにしたものです。 上記の図にあるように、Azure Load TestingはApache JMeterのスクリプトを実行することで負荷を作り出し、それをエンドポイン
modules: jmeter: version: 5.4.1 # ここに書いてあるバージョンを勝手にダウンロードしてくれる properties: log_level.JMeter: WARN log_level.JMeter.threads: WARN system-properties: org.apache.commons.logging.simplelog.log.org.apache.http: WARN 既存ツールのラッパーとして動作 デフォルトでは内部的にJmeterが実行されますが、以下のようなツールで作成されたスクリプトを流用することが可能です。 JMeter Gatling Locust Selenium Vegeta つまり、さきほどはYAMLでシナリオが記述可能とは言いましたが、もちろん既存のスクリプトを流用できるってことです。 いままで作り上げてきたスクリプトや
Application Load Testing Tools for API Endpoints with loader.io loader.io はメール送信サービスで有名な SendGrid が実験的に提供しているサービスです。 これもまた Dev Intersection に参加したときに Brady Gaster 氏のセッションで使われていて、凄く便利だと思ったので実際に試してみました。 ちなみにセッションでは Windows Azure Web サイトに対して負荷をかけて、無料から共有へとスケールさせるデモだったんですが、当然ながらそれ以外にも使えます。 まずはアカウントを登録する必要がありますが、メールアドレスとパスワードを入力するだけなので非常に簡単です。とりあえずアカウントを作ってサインインすると以下のような画面になります。 「New Test」ボタンをクリックすると、テス
10もないかも、と思いながら項目を書き出してみたら10以上余裕であってキリがないので10で収めた。いやあ、あるなあ。 仕事柄よくベンチマークを実行したりしてて色々と思うところが溜まっていたところ、以下のような記事を見掛けたのでなんか書こうと思った。ところでこの記事はベンチマークを実行するための準備作業がループを回して2時間かかるところの待ち時間に書かれている。 sfujiwara.hatenablog.com ISUCONといえば多少縁があるコンテストで、文中でISUCON5のことについても言及されているので、それも含めて。 自分が業務でいじっているのは "Webアプリケーション" というとちょっと違うんじゃないのというものばかりだが、いやー、最近なんでもHTTPで外部APIを作るからベンチマークのコツとしては大体変わんなかったりするよね。 なおこの記事でベンチマークはどのようなものかとか
こんにちは!インフラチームの川田です。 業務では社内ネットワーク構築・運用やツールの検証などしています。 本記事では、1月末から2月初頭にかけて行ったDB検証のベンチマーク結果をまとめたいと思います。 試験環境 今回は以下4つの環境を対象にMySQL 5.7互換のあるDBを構築し、ベンチマークを測りました。 Google Compute Engine (以下GCE) Google CloudSQL Amazon EC2 Amazon Aurora サービス概要 GCE及びEC2は、仮想マシンを構築することができるサービスです。 CloudSQLとAuroraは、フルマネージド型DBサービスです。どちらも簡単なので、とりあえずDB構築してみたいという初心者にオススメです。 CloudSQLはチューニング項目はありませんが、AuroraではMySQLのmy.cnfで設定できる項目の一部を変更で
k6というカジュアルな負荷テストのパフォーマンス計測用ツールがあります。 触ってみた感じ、なかなか良かったので触りだけまとめます。 LOAD IMPACTという実績のあるサービスを運営している会社が出したツールです。 https://loadimpact.com/ ドキュメント https://k6.readme.io/ GitHub https://github.com/loadimpact/k6 インストール Macならbrewで入ります。Dockerでも簡単にインストールできるので好きな方でインストールすればいいと思います。 brewで入れてみたら、go, icu4c, nodeに依存しているようで、自分の環境だと5分程度かかりました。 バージョンは、0.13.0です。 $ brew tap loadimpact/k6 $ brew install k6 : ==> Installi
はじめに JMeterで負荷テストをする際に1台の端末から負荷をかけていても負荷が足りない場合があります。そのような場合はJMeterをMaster/Slave構成にし複数台用意する必要があります。今回はAWSでこのような負荷テスト環境を構築する手順をまとめたいと思います。 AWSを使う場合は以下のリンクのページのようにCloudFormationでやる方法が早いのですがAMIやインスタンスタイプ、Java、JMeterのバージョンが古くなるのと、上手く動かなくなった場合にCloudFormationに慣れてないと原因調査に時間をとられることもあるので今回は手作業でやってみたいと思います。 お手軽JMeterクラスター 〜 フルボッコ編|アドカレ2013 : CFn #1 前提条件 今回は以下の前提で構築しています。 Master上でテストシナリオを作成したいのでMasterのOSはWin
更新履歴 2014/2/17 コメント頂いた内容を反映、誤字を修正 なぜELBの負荷テストはJMeterクライアント(GUI)1台からではだめか。 当初、ELB配下に、AZ-Aに2台、AZ-Cに2台の合計4インスタンスがある構成で、自分の開発マシンでJMeter(GUI)を動かして負荷テストをしていたのですが、なぜか、AZ-Aの2台にしか負荷が入っていない。 ググっていたら、AWS Japanの公式スライドを発見 http://www.slideshare.net/AmazonWebServicesJapan/20130612-aws-meisterregenerateelbpublic ↑のp49に、 「都度DNS解決を行うツールが望ましい」 とあります。 なるほど確かに、JMeterはDNSキャッシュしてしまっているようです。↓ https://twitter.com/just_do_
ここでは以上のようなオプションを利用しています。実行した結果は次のようになります。 Benchmark Average number of seconds to run all queries: 0.001 seconds Minimum number of seconds to run all queries: 0.001 seconds Maximum number of seconds to run all queries: 0.002 seconds Number of clients running queries: 1 Average number of queries per client: 0 平均実行時間や最小・最大の実行時間、実行したクライアント、クライアントが発行したSQLの数などが一目でわかるようになっています。 注意点としては、mysqlslapというデータベース
「JMeterの結果CSV、216万行か〜。これくらいだったらJMeterの「グラフ表示」で読み込んで見られるかな〜」 CPU「ブオオオオオオオオン!」 はじめに システムの負荷試験において、Apache JMeterのようなツールを使って試験を実施・結果を出力するケースもあると思います。結果ファイルのサイズがそれほど大きくない場合は、全データを計算する(JMeterでいう「統計レポート」)で問題ありませんが、例えば、長時間負荷をかけたので時系列でデータをグラフ化したい、といったことになると事情が変わってきます。JMeterの結果CSVは手元にあるので、なんとかこれを活用したいところではありますが、数百万行レベルのデータになると、とたんにExcelなどでは辛くなります(というか最大行数的に無理な気がします)。 そこで、ちょうど、弊社木戸がElasticsearchシリーズを連載しているとこ
負荷試験対策ミーティング ここでは、チームメンバーを集めて、システム要件の再確認と、バックエンドのアーキテクチャを再確認をまず行います。すなわち、「求められているもの=要件」と、「提供できるもの=アーキテクチャ」の確認です。ここの認識が揃っていないと、的はずれな負荷試験を実施してしまうことになりかねません。立場や役割にかかわらず、サービス全体として考えるべきです。 負荷試験の目的 負荷試験を行うことによって、何を示したいのか決めます。今回は、以下の目的を定めます。 サービスリリース後、想定されるピーク時のリクエストを受けた場合でも、問題なく稼働を続けられることを確認する システムのスループット限界値を確認する 負荷試験の観点 たいていのWebシステムの場合、昼夜を問わず稼働し続けるものとなるでしょう。今回例にとったシステムも24時間365日、リクエストを受け付けるものとします。この場合、観
負荷テストを簡単に作れて結果も自動でグラフ化してくれる便利ツールGatlingの紹介です 公式はここ http://gatling.io/#/ まずはソース(scala)を自力で書いて負荷試験を作る方法 (macでの実施を前提として書いてます) インストール方法 # download wget https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/2.1.7/gatling-charts-highcharts-bundle-2.1.7-bundle.zip unzip gatling-charts-highcharts-bundle-2.1.7-bundle.zip cd gatling-charts-highcharts-bundle-2.1.7-bundle
負荷ツールとしてGatlingのことを少し前から耳にする機会が増えたので、利用してみることにした。 色々既出だとは思うが、公式のQuickstartに従って試してみたのでメモ。 GUIが必要だったので、今回は手元のMacで実行。 Gatlingとは Java/Scala製の負荷テストツール。 JMaterと似た感じのツールではあるが、 ハイパフォーマンス 見やすいレポートHTML developerフレンドリーなシナリオファイル というのをウリとして謳っている。 たぶん、3項目とも対JMater(重い・レポート見づらい・XMLのシナリオつらい)を意識したメリットだろうなー。 なお、シナリオファイルは。。。 Gatling simulation scripts are written in Scala, but don’t panic! わろた。 というわけで、触ってみる Install J
(注記:6/9、いただいた翻訳フィードバックを元に記事を修正いたしました。) 今回の記事は毎秒300万ものリクエストを処理できるほど強力で高性能なWebクラスタの構築についてのパート1になります。まず初めに、あまり多くはありませんが、私がこれまで使用したことのあるロードジェネレータツールをいくつか紹介します。私のようにてこずって時間をかけてしまわないよう、今回の記事が理解の手助けになれば幸いです。 ロードジェネレータはテストを目的とした数種類のトラフィックを発生させるプログラムです。それによって高負荷においてサーバがどのように動いているか、そのサーバの弱点はどこなのか、などが見えてきます。負荷テストを通じてサーバの限界を知ることは、サーバのレジリエンシーを測定する最適な方法であり、あらゆる問題に対する準備の手助けにもなります。 ロードジェネレータツール 負荷テストをする際に頭に入れておくべ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く