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というエラーコードがあります。この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 スケジューラに関する研…