Apache Bench(abコマンド)で変数使ったり複数種類のURLリクエストを送りたい

デフォルトのabコマンドでは、指定できるURLは固定ですが複数のURLを送る方法を探したら、以下の方が作成していたのでありがたく使わせていただきました。 chrismiles.livejournal.com 使い方 以下のようにパラメータを入れたテキストを準備します。 name=fo…

AWS ELBの504ステータスのGateway Timeoutと格闘した話(最終的にALBで直った)

AWS

ELBのメトリクスのステータスには、バックエンドのEC2が返したステータス(HTTPCode_Backend_XXX)と、ELB自身のステータス(HTTPCode_ELB_5XX)があります。 ELB自身のステータスコードの中には504というエラーコードがあります。この504エラーと格闘した話を書…

AMIから構築したEC2は最初EBSが遅い、プレウォーミングが必要

AWS

EC2をAMIから構築したところ、ディスク(EBS)が遅い。CloudWatchでもキュー長が増加してしまっていました。 問い合わせたところ、AMI からEC2インスタンスを作成した場合、各 EBSボリュームは スナップショットからリストアした際と同様、データは S3 がダウ…

RedisにBashを使って大量データを高速挿入(INSERT)する

Redisに数千万件の大量データを挿入したいという要件がありました。 手元のテキストファイルをBash使って手軽に高速に挿入したいのですがredis-cliを普通に使うとスピードが出ない。 Redisのプロトコルで流し込む方法が推奨のようです。 大量データのインサ…

Redisの「Cannot assign requested address」のエラーが出たので対応

ローカルのRedisに大量データを入れていたところ、以下のエラーが発生しました。 Could not connect to Redis at 127.0.0.1:6379: Cannot assign requested address Socketの状態を見てみたら以下の通り。28232 TIME-WAIT が問題でした。 $ ss -tan | awk ‘{…

LinuxのI/OスケジューラのDeadlineを調べてチューニングしてみた

Deadlineスケジューラの概要 チューニングパラメータ write_expire,read_expire writes_starved fifo_batch ソースコード読む時のエントリ部分 SSD向けのチューニング例 設定方法 最後に 参考文献とURL ● SSD の並列性を引き出す I/O スケジューラに関する研…

Linuxページキャッシュの設定を変更してWrite I/Oをチューニングしたメモ

環境 設定パラメータ 計測ツール 1 ダーティーページ状況の計測ツール 出力項目 出力フォーマットと出力例 2 時間付きvmstat 3 fio(I/O負荷発生ツール) 観測 実験 チューニング例 デフォルト値 ダーティーページの最小化 キャッシュ有効活用メモリ上に乗せた…

CentOS7でSystemdがメモリリークしていて使用率がジワジワと上昇していた

ほとんどサービス動いてないサーバが急にメモリ使用率の警告出したので調べて見たら、1日に30MBくらい、1ヵ月で1GBくらいジワジワとSystemdがメモリリークしていたという話です。 事象 Systemdが異常にメモリを使っている。 $ ps aux | head USER PID %CPU %…

Solrのレプリケーション帯域幅を制御してI/Oパフォーマンスを制御する

Solrのレプリケーションが原因で、EC2のSolrサーバが定期的にIOボトルネックのパフォーマンス劣化起こしてたので、対応としてレプリケーションの帯域幅を制御できるパラメータ( maxWriteMBPerSec )を使ったのでメモ。 経緯 最初はI/Oボトルネック解消のため…

BashスクリプトからSQLiteを操作する方法(PSコマンドの結果をDB格納してみた)

Bashスクリプトやワンライナーから直接SQLiteを操作する方法です。せっかくなのでPSコマンドで出力したプロセスの一覧をDBに格納するところまでやってみました。 Bashからsqliteを操作する方法 DB作成方法。 echo ".open db_name" | sqlite3 SQL文投入はこん…

serverspecの評価結果をjson形式で出力する(複数ホストにも対応)

serverspecの結果を他の仕組みと連携させたい場合など、json形式で出力する方法です。 標準 specに標準でjsonフォーマッターが付いているので、 --format オプション指定するとjson形式の結果が得られます。 bundle exec rake spec SPEC_OPTS="--format json…

NagiosでMySQLのslow query監視しようとして見つけたcheck_mysql_healthが色々できる

掲題の件、少し探したらcheck_mysql_healthというプラグイン見つけた。 ConSol Labs - check_mysql_health 導入方法 以下のような方法で導入します。 cat <

【Nagios】SSL証明書CRTファイルの有効期限をチェックするプラグイン作った

SSLの証明書期間チェックのためのスクリプトです。 HTTPSでアクセスして確認する方法もありますが、普段アクセスされない待機系などの確認に利用するために作ったものです。 プラグインの仕様 監視対象側のNRPE設定 Nagios側の設定 Ngios画面イメージ プラグ…

AWS EC2のタグを関連するEBSとENIにコピーするスクリプト

AWS

結構前に一回実行用に作ったものだけど、最近使う機会出たのでここにもメモ。 #!/usr/bin/env ruby require 'aws-sdk' require 'pp' region = 'ap-northeast-1' cred = Aws::SharedCredentials.new Aws.use_bundled_cert! cli = Aws::EC2::Client.new(creden…

【Windows10】Bash on Ubuntu on Windowsが0x80070005エラーで起動しなくなった

昨日まで動いていたのに突然 0x80070005 というエラーコードでbashが起動しなくなった。 調べてみると以下のような情報に辿り着いた。 Error reinstalling bash - Error 0x80070005 · Issue #473 · Microsoft/BashOnWindows · GitHub アンインストールして、…