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

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

【Nginx】multi_acceptを有効化すると何が変わるのかをソースも一緒に追ってみた(追記)

概要 nginxの設定でmulti_acceptという設定がありそれをon/offすることで内部的にどう変わっていくのかを追っていく記事。パフォーマンスを求める場面 では必須の設定(?)だと思うのですが実際は内部的にどういう動作となっているのかを追っていきます。ちな…

リビングにテレビを置いてみた

テレビ導入した。 pic.twitter.com/4BK8PKBOmR— Ryuichi@Gurasan:|| (@ryuichi_1208) 2022年4月24日 リビングなのか書斎なのかよくわからない部屋が一つあってそこにテレビを置いてみた。見るか見ないかで言ったら見ないんだろうけどあればそのうち使うかも…

【Go】delveで起動済みのプロセスにアタッチする

github.com delveを使って起動済みプロセスにアタッチする方法 delveをインストール $ go install github.com/go-delve/delve/cmd/dlv@latest アタッチ サンプルプログラムを用意。3秒置きに文字列を出力するやつ package main import ( "fmt" "os" "time" )…

【Go】実メモリ使用量が減少しないケース

ryuichi1208.hateblo.jp MySQLがOSにメモリを返さないというような話を前に書いた。それに付随してそういえばGoで動いているサーバもメモリ使用率高かったなというのを思い出したのでGoのメモリ管理についても調べてみた。 zenn.dev とてもわかりやすくまと…

【Nginx】SIGUSR1を受け取った後の処理をざっくり見ていく

ログローテートの記事を書くためのサンプルとしてとりあえず追っていく記事。ログローテートの設定は別でやる必要があるのでこの記事のサンプルで動作するときの流れをイメージして書いていく。 qiita.com SIGUSR1はsrc/core/ngx_config.hでdefineされている…

ディレクトリAには存在するけどディレクトリBにはいないファイルを知りたい

久々にnginxのソースを読もうとコードが置いてあるパスに移動したらどれいじったのか全く分からなくなっていた。wgetとかでとってきた履歴だけはあったので同じコマンド打ってどの辺違いあるんだっけを知りたくてシェルスクリプトを書いた。差分を見たいディ…

Goでバルクインサート

社内ポッドキャストを聞いていたら出てきた単語で一度のinsertで複数のデータをまとめてDBに入れるやつ。 GO入門中でそういえばまだやってないなと思って調べたのでメモ書き。自宅にMySQL環境が用意されたので今後も色々遊んでいこう。 query := ` INSERT IN…

tecton manifest サンプル

apiVersion: tekton.dev/v1alpha1 kind: Task metadata: name: s2i-java-8 spec: inputs: resources: - name: source type: git params: - name: PATH_CONTEXT description: The location of the path to run s2i from default: . type: string - name: TLSV…

tectonとは

Tekton とは、2019/3 に発足した Continuous Delivery Foundation がホストするプロジェクトの一つであり、サーバレスフレームワーク Knative のビルド機能 Knative Build から派生したプロジェクトです。Tekton の概要や各 Custom Resource の説明は、別記…

livenessProbe とは何か、失敗すると何が起こるか

livenessProbe に失敗したコンテナは再起動される。

readinessProbe とは何か、失敗すると何が起こるか

readinessProbe が失敗すると Pod は ready ではなくなる。 ready でない Pod は Service (Endpoints) の振り分け先から外される。

Trickleを使ってユーザスペースだけでネットワーク帯域を制限する

readelfをしてみる 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000001528 0 SECTION LOCAL DEFAULT 9 2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND getenv@GLIBC_2.2.5 (2) 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __snprintf_ch…

【MySQL】とりうるメモリのサイズ

MySQLが取りうるメモリのサイズ SELECT ROUND( ( @@GLOBAL.key_buffer_size + @@GLOBAL.query_cache_size + @@GLOBAL.tmp_table_size + @@GLOBAL.innodb_buffer_pool_size + @@GLOBAL.innodb_log_buffer_size + @@GLOBAL.max_connections * ( @@GLOBAL.sort_…

自宅サーバの管理を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

【Mackerel】hostidからhostnameを引くワンライナー(jq)

式グラフを使っていたらhostidしか見れなかったので欲しかったワンライナー。mkrにも機能としてはなさそうだしもしや式グラフの作り方がよくないだけかもしれない...?? mkr hosts | jq ".[] | select(.id == \"${hostid}\") | .name"