地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

2022-03-01から1ヶ月間の記事一覧

自宅サーバの管理をAnsibleからシェルスクリプトに戻した

github.com Ansibleで頑張っていたけどcurlでそのまま叩くだけでいい感じになった方が楽に思えてきたので戻してみた。こまりポイントとか出てきたらまた戻すかもしれないけど。 CentOSしか動いてないけどUbuntuにそろそろ入門してやっていくのもありかなとか…

【vim】UltiSnipsを使い始めた

github.com Vimのスニペットの究極のソリューションのUltiSnipsを使い始めた。あまり好んでいれてこなかったのは入力後のもっさり感が嫌だったのだがUltiSnipsはとても軽く動くというのを聞いていれてみた。 vim-goで入るsnippetが公開されてたのでこれをい…

【Go】カーネルが出しているTCP関連のメトリクスを取得するmackerelプラグインを書いた

github.com ListenDropとかTCPでの再送あたりに絞って取れるものがなかったので書いた。 netstat.tcp.segments.TcpInSegs 154.285714 1648393258 netstat.tcp.segments.TcpOutSegs 112.653061 1648393258 netstat.tcp.segments.TcpRetransSegs 1.530612 1648…

【Go】httpサーバを立ててGracefulに色々やる

サンプルアプリ こんな感じのコードをgracefulに色々できるようにしていく。 package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { time.Sleep(500 * time.Millisecond) // ちょっと重い処理を想定 fmt.Fprint…

【Go】DNSLookupとTCPの3wayhandshakeとsslhandshakeをそれぞれ計測するMackarelプラグインを書いた

github.com gurasan.dnsLookupTime 14 1648046186 gurasan.tcphandshakeTime 14 1648046186 gurasan.sslhandshakeTime 43 1648046186 DNSもL4LBもSSL終端もマネージドじゃない環境で設定変更した時とかに性能劣化を知りたいみたいなケースで使えそうなので書…

【Go】Interfaceを使ったテストに入門する

チームの共用語(?)がGoになったというのもあってGoのテストについて入門し始めた。テストコード自体はlinux-test-project/ltpを独自でforkしたものをメンテナンスしていたりとCではあるが基礎ぐらいは取得してるかなという感じでした。入門していく中でMock…

MySQLで使用しているメモリが徐々に増え続けているので調べたメモ

MySQL 5.7を使っているシステムで週単位で徐々にメモリ使用量が増え続けているという現象に遭遇したのでこれなんでだろうと思って調べてみたメモ MySQLのメモリ管理 dev.mysql.com MySQLがどのようにメモリを使用しているかの話。innodb_buffer_pool_sizeに…

仮想メモリ使用量を取るだけのMackrelプラグインを書いた

github.com CommittedASあたりだけ知りたいのだがメトリクスもりもりなプラグインしかなかったので特化したプラグインを書いてみた。("/proc/meminfo"を全送信するやつは見つけたけどメトリクスが活きるケースまあまあレアなのでいらんだろうなぁという思い…

MySQL サーバステータス変数メモ

メトリクス一覧/概要とコメント BinLog Disk Usage 項目 概要 Usage ソースインスタンスのバイナリログで使用されているストレージ領域のサイズ MySQL Command 項目 概要 Questions 1分間あたりのサーバーによって実行されたステートメントの数。MySQL への…

nginxのrequest_timeにはSSL Handshakeにかかった時間は入らないっぽい

$request_time request processing time in seconds with a milliseconds resolution; time elapsed between the first bytes were read from the client and the log write after the last bytes were sent to the client nginxはrequest_timeをログに出す…

FINじゃなくRSTで通信を終える

stackoverflow.com Turn the SO_LINGER socket option on and set the linger time to 0 seconds. This will cause TCP to abort the connection when it is closed, flush the data and send a RST. See section 7.5 and example 15.21 in UNP. SO_LINGERを…

curl 7.82.0でjsonのpostが楽になっていた

github.com API使ってコネコネみたいなワンライナー書く時にcurlに-H "Content-Type: application/json"を指定したりPOSTを指定したりと面倒だったが--jsonが追加されてそれらのショートカット機能が実装されていた。--json ""とやるだけで以下のようなリク…

curlの時間たち

http_connect CONNECT に対するレスポンスのコード (7.12.4 で追加された) local_ip 接続時のローカル側のIPアドレス (7.29.0 で追加された) local_port 接続時のローカル側のポート番号 (7.29.0 で追加された) num_connects Number of new connects made in…

openssl速度出力

www.openssl.org openssl-speed NAME openssl-speed - test library performance SYNOPSIS openssl speed [-help] [-elapsed] [-evp algo] [-hmac algo] [-cmac algo] [-mb] [-aead] [-multi num] [-async_jobs num] [-misalign num] [-decrypt] [-primes nu…

Nginxのlingering_closeってなんだろうと思って調べた

nginx.org 別件でNginxのソースをgdbでデバッグしながら見てたらlingering_closeがなんたらというパスを見つけたのでせっかくなので調べてみた。lingeringは余韻という意味でクライアント/サーバモデルのシステムがあったとしてサーバ側がアクティブクローズ…

GDBで子プロセスのデバッグ

set follow-fork-mode child