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

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

2022-01-01から1年間の記事一覧

【TiDB】Macに入れてsysbenchを実行してみた

MySQLはbrewで入れてTiDBはtiupで立ち上げた直後にsysbenchを実行してみた結果。Mac上でDBを上げてMac上でsysbenchも実行するという本番ではまあ無いような構成でやっています。結果としてはMySQLの方が倍近いQPSを出していました。TiDBのスケールアップも試…

【RocksDB】入門する

github.com RocksDBは、Key-Valueストアおよび読み取り/書き込み機能を提供するLSMツリーストレージエンジンです。 Facebookによって開発され、LevelDBに基づいています。 atmarkit.itmedia.co.jp

【Linux】fdごとにflagsを取得してパースしてくれるツールを書いた

github.com 2022年最後の運用を少し楽にするかも知れないツールです。open(2)時のフラグをあとから知りたいという場合は/proc/${pid}/fdinfo/${fd}の中身を見る必要があるのですがこれが8進数でしか出力できないのでいい感じにパースしてくれるやつを書きま…

【Linux】ファイルディスクリプタにO_CLOEXECが立っているかを調べる

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #define LOG_FILE_PATH "./test.log" int main(int argc, char **argv) { int fd, size; char buf[128]; fd = open(LOG_FILE_PATH, (O_RDONLY | O_CREAT), 0664); if (fd < 0) { return -1; } int flags =</stdlib.h></stdio.h></fcntl.h></sys/stat.h></sys/types.h>…

2022年を振り返る

年始に書いた目標の進捗 ryuichi1208.hateblo.jp この記事を書いて早1年が経った。2022年バージョンの振り返りです。 2022年目標・CKA or CKAD取得・AWS プロフェッショナル系取る・カンファレンス何か出る・会社のテックブログを書く— Ryuichi@Gurasan:|| (…

【DB】B-TreeとLSM-Treeを学ぶためのリンク集

概要 DynamoDB、Cassandra、ScyllaDB など、多くの非常にスケーラブルな NoSQL 分散キー値型データベースの基礎となるデータ構造です。RDBでメインのB-Treeとは違ってKVSなどで使われています。一方でTiKVなどNewSQLの文脈でも登場する機会が多く知っておか…

【TiDB】入門する

記事説明 NewSQLに触れる機会が出てきそうなのでとりあえず概要だけでも知っておきたいので入門する。 所謂「NewSQL」と呼ばれるトランザクション処理を実現しつつもreadもwriteもスケーラビリティを備えた新しい種類のRDB。そのNewSQLの中でも今回はOSSで開…

【ポエム】仕事の再現性と言語化

この記事は「IT関連の普段のお仕事について色々!」の25日目の記事です!普段の仕事の工夫点や考えてることについて書いています! qiita.com 記事の概要 再現性と言語化について最近思ってることのメモ記事です。年末なのでポエム多めです。ポエムってなん…

【C】lsっぽいものをさらに早くするにはなにか出来ないかを考えてみた

ryuichi1208.hateblo.jp この記事の番外編?的な記事。もっと早くならんかねを検証してみる。前回よりもファイル数を倍くらいにしてる(違う検証をしてたらこうなってしまっただけ)ので前回のデータとの単純な比較は出来ないです。 前回の最速のソース #inclu…

【ポエム】(SREチームの)割り込みタスクは悪なのか

この記事は「SRE Advent Calendar 2022」の13日目の記事です!ポエムです! qiita.com 本題 割り込みタスクの扱いが難しい— Ryuichi@Gurasan:|| (@ryuichi_1208) 2022年12月25日 スプリント計画で出たタスク以外のタスクの扱いが難しい。障害対応やアラート…

アウトプットはいいぞ

この記事は「Qiita史上最多記録をつくろう!アウトプットはいいぞカレンダー Advent Calendar 2022」の23日目の記事です!空いていたので入れちゃいました! qiita.com カレンダーの概要を見てみる 本カレンダーはQiita主催カテゴリーにおける特別企画です。…

【Linux】100万ファイルくらいあるディレクトリのファイルのリストを高速に表示したい

概要 ファイル名のリストだけ高速に欲しいみたいな場合に大量にファイルがあるディレクトリでlsを打って返ってこないみたいなのが地味にストレスになったりするので高速に済ませる手段が無いかを調べてみた。 1ディレクトリに100万ファイル程度 計測前にecho…

1TBをネットワーク経由でコピーするのに5秒くらいで終わらせることは出来るのか

前説 この記事は「GMOペパボエンジニア Advent Calendar 2022」の23日目の記事です! adventar.org 目次 前説 目次 本編 要件整理 結論 なにはともあれボトルネック特定/改善をしてみる 家庭用サーバの場合 Disk性能を上げてみる ネットワーク性能を上げてみ…

【Linux】Open済みのファイルのパーミッションが変えられてもファイルへの書き込みは続けられる

この記事は「Linux Advent Calendar 2022」の21日目です!空いていたのでいれさせていただきました!!:waiwai: qiita.com 概要 タイトルが全てですがある一般ユーザで実行されているプロセスがwrite権限を持ってい状態でオープンしたファイルへは別ターミナ…

【MySQL】クライアントが死んだ後のMySQLの処理

mysql -e "select sleep(30)"とかやっておいてMySQL側はどういう処理をしているのかをstraceで見てみるメモ poll([{fd=41, events=POLLIN|POLLPRI}], 1, 0) = 1 ([{fd=41, revents=POLLIN}]) ioctl(41, FIONREAD, [0]) = 0 futex(0x1d8ff10, FUTEX_WAKE_PRIV…

【nginx】ソケットのキューのサイズを出力するMackerelプラグインを書いた

github.com LinuxのTCPは2段(netdevもあるので厳密には3段以上)のキューの仕組みがあります。クライアントがconnect(2)はサーバ側のOSがackを返した時点でconnect(2)は戻ります。この状態でサーバアプリケーションがaccept(2)を実行することでクライアントと…

【Linux】プロセス終了時のソケットを閉じる処理を見ていく

プロセスの終了はdo_exit関数で行われます。明示的にexitシステムコールを 呼び出したとき以外にも、シグナルを受けて死ぬときなどにも呼び出されます。 do_exit関数ではリソースの解放も行っており今回読みたいソケットを閉じる処理も呼び出していきます。…

【Go】[]byteを文字列として扱うならstring([]byte)よりもunsafe.Pointer()を使ったほうが早い

まとめ var tmp []byte // こうするより str := string([]byte) // こうした方がメモリコピーが発生しないので早い str := *(*string)(unsafe.Pointer(&tmp)) 本文 以下のような関数をベンチマークしたいときに使える話です。 package main import ( "os" "r…

【RDS】RDSでBlue/Greenデプロイ!すごい!!すごい!!!!(色々修正版)

qiita.com この記事は「MySQL Advent Calendar 2022」の20日目の記事です!前に書いたやつ(機能発表された数時間後に書いた)の加筆修正版になります! dev.classmethod.jp AWS re:Invent 2022で発表されていた機能。最初見た瞬間「???」となった。謎技術…

【Nginx】Rate Limitのexpireあたりの実装を眺めてみた

この記事は「nginx Advent Calendar 2022」の17日目の記事です。 ngx_http_limit_req_moduleを使うことでリミットの制限を行うことが出来る。ここで疑問に思ったがめちゃめちゃ大量にアクセス元があるサイトでこの実装をしたときどういうメモリの使い方をし…

ブラックフライデーで買ったもの

買ったもの紹介 TOSHIBA / 東芝 REGZA 48X8900L [48インチ] item.rakuten.co.jp 初めての有機ELテレビ。バラエティしか見ないので実はそこまで恩恵受けていない。 ハヤミ工産 自立スタンド item.rakuten.co.jp 初めてのスタンドテレビ台。壁との距離が縮まっ…

今年作ったMackerelプラグインを振り返る

この記事は「Mackerel Advent Calendar 2022」の9日目です!去年に引き続き今年も作ったもの紹介をしてみます! qiita.com 本編 github.com /proc/meminfoをパースして出してくれるツールです。1月1日に作ったみたいでMackerelで開始した年だったようです。(…

【Nginx】epollとaccept thundering herdの話

この記事は「nginx Advent Calendar 2022」の6日目の記事です! qiita.com en.wikipedia.org nginxのアーキテクチャは親プロセス+子プロセスのアーキテクチャで子プロセス(以下ワーカプロセス)がクライアントとのやり取りを行っています。 初期化処理 親プロ…

【Lambda】Graviton2 プロセッサを使っても早く安くならないケースがあるかも知れない(Golangの場合)

この記事は「Go Advent Calendar 2022 3」の3日の記事です! qiita.com 前説 aws.amazon.com LambdaをGoを使って何かをしたいときにarm64 アーキテクチャを使うと早くて安くなるという情報を得ていたので調べてみた。 結論 CPUバウンドな処理じゃなければあ…

CNDT 2022に登壇してきた

qiita.com この記事は「SRE Advent Calendar 2022」の3日目の記事です! 本編 event.cloudnativedays.jp 参加してきた。1日目。オフラインイベントめっちゃ久々だった。最後に行ったのなんだろうと考えてみたら2019のOSCのFallが最後だったっぽい。このとき…

「Linuxプログラミングインタフェース」読書会を開催しました(現在も進行中)

前説 adventar.org この記事は「GMOペパボエンジニア Advent Calendar 2022」の3日目の記事です。アドカレが始まりました!もう1年が終わります!やばい!寒い!! 去年はRedisのコードリーディングを書いてましたが今年はLinuxネタです!(来週には実践Redis…

【MySQL】RDSのアップデートで書き込みスループットが2倍になるケースを考えてみる

帰宅前に以下の記事を読んですごい!となったがジムのランニングマシン使用中に「2倍ってどうやったら行くん?」ってなったので調べた。 dev.classmethod.jp という機能がリリースされていた。中身自体はMySQLのDoublewrite Bufferの機能をオフにするという…

【ProxySQL】DBサーバがOSごと落ちた場合に起きうるユーザー影響の度合いを調べた

C++入門中で読みたかったので呼んでみた記事。 DBサーバが落ちた場合に切り離しまでにかかる時間 落ちた = OSごと通信不可となった場合とする。切り離しまでにかかる時間は概ね以下のように決まる shun_on_failures 1秒間あたりに失敗する接続の数の閾値。こ…

リトライ

mysql-query_retries_on_failure

CNDT 2022に参加してきた(1)

event.cloudnativedays.jp 参加してきた。1日目。オフラインイベントめっちゃ久々だった。最後に行ったのなんだろうと考えてみたら2019のOSCのFallが最後だったっぽい。このときはLT下記憶がある。これが2019の11月末なのでちょうど3年ぶり。すごい。 セッシ…