AWS S3を保存先としたプライベートなDocker Registryを公式コンテナから簡単導入

タイトルの通り。作業メモです。 テスト用イメージ作成 テストで利用するイメージを作ります。 Dockerfile作って。 cat <<EOF > Dockerfile from alpine:latest ENTRYPOINT ["echo","myimage"] EOF ビルドして。 docker build --no-cache -t myimage . ビルドされ</eof>…

AWS ALBのアクセスログ分析環境をDockernizeしてローカルPCで実行できるようにした

AWS ALBのアクセスログをサーバ上のBananaで分析していたのですが、Docker使って手元のPC環境でも簡単に実行できるようにしました。 github.com 使い方 Repositoryをダウンロード git clone https://github.com/yomon8/alb-log-analyzer.git cd alb-log-anal…

ALB/ELBのアクセスログを時間指定でダウンロードして標準出力してgrep検索可能にするツール作った

AWS ALBやELBのアクセスログですが、5分毎に出力していると大量のファイルになります。 調査するにしても複数の細かく分かれたファイルを結合したり、JSTとUTCの差を失念していて勘違いしたり、S3のフォルダ構造深かったり、ALBのアクセスログはgzip形式なの…

引数で渡した複数のストリームを行単位でマージしリアルタイム出力するコマンド作った

ツール書きました。 github.com 例えば以下のような3つのコマンドを同時に実行して、結果をリアルタイムでマージして出力したいとします。 1 (sleep 1;echo SlowSlow) 2 (sleep 0;for i in $(seq 1 25);do printf aaa;echo;done) 3 (sleep 0;for i in $(seq …

AWS CLIの利用方法まとめ(主にqueryオプションとTips)

AWS

queryオプションを主にaws cliの使い方をメモしておきます。随時更新予定です。 queryオプション query指定無しだと 基本の使い方 出力形式を知る queryを使ってみる 関数(Functions) contains join starts_withとends_with to_string sort_by Tips JMESPATH…

コマンドラインでEC2のコンソール画面テキスト(システムログ)を取得してgrep分析

AWS

EC2が原因不明で接続不可になることは以外に多いです。そんな時にVMWareやHyper-V、KVMみたいにコンソール画面に何が出ているのか確認したくなります。 AWSマネジメントコンソールから「インスタンスの設定」>「システムログの取得」で以下のような画面が取…

【AWS】ALBからCLIでEC2切り離しderegister-targetsはGracefulじゃない?

AWS

ALBからEC2を切り離す時に使う aws elbv2 deregister-targets のコマンド、大量のアクセスがあってもエラーを返すことなく切り離すことができると思っていました。 ① EC2をALBより切り離し aws elbv2 deregister-targets --target-group-arn target_group_ar…

【Solrエラー対応】TooManyClauses: maxClauseCount is set to 1024

Solrで大量のAND条件でクエリ投げた場合などに以下のようなエラーが発生する場合があります。これを調査しました。 org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024 BooleanQueryの制限値があるというエラーなのです…

【Solrエラー対応】LukeRequestHandler Error getting file length for [segments_N]の警告について

事象 題名の通りSolr6系統で以下の警告が出る場合があります。 LukeRequestHandler Error getting file length for [segments_N] StackTraceの例: java.nio.file.NoSuchFileException: /var/solr_node_8983/data/mycore/data/index/segments_3 at sun.nio.fs…

AWS ALBに長いリクエストURLでGETすると414や500でエラーになる

AWS

AWS ALB(Application Load Balancer)に長いURLリクエスト投げてみたら、以下のテーブルのように、ある長さのリクエストからエラーが出ることを発見しました。 URLの長さ(Byte) HTTPレスポンスコード 〜16446 200 OK 16447 500 Internal Server Error 16448〜…

Lucene/Solrのパフォーマンスチューニングした内容をまとめてみた

Solrのパフォーマンスチューニングを一通り行ったので、忘れないうちにまとめてみたいと思います。Lucene/Solrのバージョン6系統になら当てはまると思います。 インデクシングのパフォーマンスにも関係するところはありますが、主に検索側のパフォーマンスに…

【AWS】ALBから自身(EC2)を切り離したり登録するbashスクリプト

AWS

ALBはELBと異なり複雑な構成も取れるので、必要に応じて修正して使う前提で、LBとTargetGroupとListenerが1:1:1の基本構成で作りました。 EC2をALBから切り離し ほとんどをAPIから取得する構成にしましたが、複雑な構成なら変数として持った方が良いと思われ…

Lucene/Solr DocValuesについて調べたことをまとめてみた

DocValuesとStored&FieldCache StoredされたFieldの動き Storedの弱点とそれを補うFieldCacheの役割 DocValuesについて DocValues の注意点 Solrバージョン毎の機能制限を確認する MultiValueの順序保証 DocValuesとStoredの設定によるクエリ挙動の違い 一度…

Lucene/Solr インデクシングの簡単なデバッグログ出力の設定方法

Solrを使っいると、Luceneインデクシングの内部仕様を調べることが出てくると思っています。 Luceneのインデクシングデバッグ ということでLucene in Action読んでいたところ、「2.12. Debugging indexing」という項目見つけました。 Lucene in Action作者: …

Luceneの類似画像検索プラグインLIREのデモアプリを動かしてみた

動かしてみたのと、その時調べたことをざっくりとメモ書き。 前提ソフトウェア Javaの1.6以降 gradleをインストールしておくと簡単です gradleはmac なら以下のコマンドで入れられます。Windowsでもググればわかりやすい記事が沢山出るはずです。 brew insta…

MySQLのマイナーバージョン指定したYumインストール・更新

5.7.18 がこの記事書いている時点のMySQL 5.7の最新になります。5.7以外にも前の5.6をインストールしたいなどという時には以下の記事の手順などを参考にさせていただけば問題無くインストールできると思います。 CentOS6.8にyumでMySQLをバージョン指定イン…

【Linux I/Oチューニングに便利】vmtouchでファイルがキャッシュに乗っているか確認

LinuxでI/Oと格闘していると、重要なファイルがどのタイミングでキャッシュに乗ってくるかは死活問題になります。 このファイルってどれくらいキャッシュに乗っているの?という時に便利な vmtouch というツールがあったのでご紹介。 導入方法 導入はいたっ…

Solrのキャッシュについて調査したことまとめ

モニタリング方法 キャッシュの実装の種類 LRUCache と FastLRUCache LFUCache LRUとLFUのアルゴリズムの違い キャッシュの種類 種類 設定項目 FastLRUCacheとLFUCacheのキャッシュサイズ制御の動き filterCache useFilterForSortedQuery queryResultCache q…

Golangの練習で簡単な構文解析型のCUI電卓作ってみた

1ヵ月前くらいからGolangを書き始めています。さきほど練習で書いたプログラムを技術向上のためにもここにメモ。 仕様 利用できる変数はa〜zの26個 a=10+20 の形で演算と代入処理可能 ( ) + - * /の演算子を利用 ? で結果出力する 練習なので基本パッケージ…

Redis監視するためのNagiosプラグイン作ってみた(Golang)

Nagiosの監視しようとRedisプラグイン探してみたら以下が見つかりました。 check_redis.pl - Nagios Exchange ただ、PerlやPHPが必要だったので、バイナリファイルを置くだけで動くGoでプラグインを作ってみました。 コマンドのオプション オプション 説明 -…

RedisからTTL(Expire)設定されていないKeyの一覧を取得する

TTLが設定されていないキーの一覧を取得する方法です。 以下で言えば、keys=6328703 と expires=6328701 の差分の2件を知りたい場合です。 $ redis-cli info keyspace # Keyspace db0:keys=6328703,expires=6328701,avg_ttl=9169857 bashで実装 少量のデータ…

mysqlコマンドで大きいデータをパイプやリダイレクト連携するとメモリ容量が足りなくなる

以下のようにmysqlコマンドをパイプやリダイレクトで連携させたら、mysqlコマンドのメモリ使用量が急増しました。 動きを見ているとバッファリングされてしまっているみたい。全部結果を溜め込んでから、後ろに流すような動きです。 mysql $option -e "selec…

Apacheのmod_proxy_balancerのbybusynessに振り分けについて調べてみた

Apacheのロードバランシングモジュールである mod_proxy_balancer の振り分けアルゴリズムの bybusyness について調べた内容です。 byrequestsとbybusyness bybusynessの使いどころ 検証による動きの比較 シナリオ① 特定のサーバが遅くなる時を再現 シナリオ…

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というエラーコードがあります。このエラーと格闘した話を書きます…

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負荷発生ツール) 観測 実験 チューニング例 デフォルト値 ダーティーページの最小化 キャッシュ有効活用メモリ上に乗せた…