- blogs:
- cles::blog

高負荷サーバでは net.core.somaxconn の設定に注意



外部から多数のコネクションを受け付けるサーバが遅いと思ったら、コネクションを取りこぼしていました。
具体的には net.core.somaxconn
の値が Linux 5.4 以前はデフォルトが 128 とかなり小さな値で、これがボトルネックになってしまっていました。このカーネルパラーメーターは TCP ソケットの listen() のバックログのキューの深さを表しているので、多数の接続を受け付ける場合にはこれを大きくしておく必要があります。
現在の設定値を確認するのはこんな感じでできます。
そして、値の変更はこんな感じでできます。
プロセスが起動するときに net.core.somaxconn
の値を読み込んでいることがあるので、値の反映後に httpd などの daemon も再起動してやる必要もあります。
† 参考
/proc/sys/net/ipv4/* Variables
somaxconn - INTEGER
Limit of socket listen() backlog, known in userspace as SOMAXCONN.
Defaults to 4096. (Was 128 before linux-5.4)
See also tcp_max_syn_backlog for additional tuning for TCP sockets.

mysqldumpslow をヒントに MariaDB/MySQL をチューニング


あるプロジェクトで使っている MySQL(というか MariaDB)が遅いので、mysqldumpslow を使ってチューニングしてみました。
mysqldumpslow*1 というのは slow ログファイルを解析して、要約を表示してくれるユーティリティで、これを使うと slow ログの中でもよりボトルネックになっているクエリを探し出すことができます。
† まずは slow ログを MariaDB/MySQL に吐かせる
mysqldumpslow を使うためには、対象となる slow ログ(時間がかかる SQL のログ)を手に入れる必要があります。
通常の MariaDB/MySQL では、slow ログは以下のように無効になっているはずです
これを以下のクエリによって書き換えてやります。
設定は即時有効になりますが、再起動時には元に戻ります。常に出力する場合には my.cnf に定義を書込んでください。
また、ここでは slow ログの閾値を 0.5 秒としていますが、場合によってはもっと小さくした方が良いかもしれません。
† slow ログを mysqldumpslow に喰わせる
あとは出力された slow ログを以下のような感じで mysqldumpslow に喰わせると結果を得ることができます。
クエリ内の数値や文字列は 'S' や 'N' に置換されて纏められるので、slow ログの量が多くても出力結果はかなり少なくなっているはずです。あとはこの出力結果を EXPLAIN して、クエリの実行計画を見ながらインデックスなどを調整してやれば OK です。

Add-on Compatibility Reporter で E10S に対応していないアドオン探す


Firefox 54 からマルチプロセス機能 Electrolysis(E10S) が有効化されましたが、僕の環境の場合には「ヘルプ」メニュー→「トラブルシューティング情報 ...」から確認してみると、マルチプロセスウィンドウは「アドオンにより無効」という表示になっていて有効化されていません。
問題はどのアドオンが原因なのかということになりますが、これについては Add-on Compatibility Reporter を入れることで確認することができます。
具体的な手順はアドオンをインストールして、アドオンの一覧画面を開くだけ。そうするとアドオン名の脇にマルチプロセスの対応/非対応が Compatible with multiprocess / Not compatible with multiprocess というメッセージで表示されるようになります*1。
これを見ると意外と非対応のプラグインが多いので、僕の場合は E10S への道のりは長そうです。もちろん無理やり有効化する方法もあるのですが、いろいろなところで不具合が出るのでオススメできません。
- *1: Help make add-ons multiprocess compatible with Add-on Compatibility Reporter | Mozilla Add-ons Blog

OCCT で CPU のオーバクロックのチューニングを

最近どうも PC の調子が悪いのですが、どうもオーバクロック設定の設定を AUTO にしているのが問題ということが分かってきたので、マニュアルでチューニングをすることにしました。
オーバークロック設定のチューニングを行うときに必要になるのが、CPU をフル回転させるための負荷テストツール。シングルコアの時は Super Pi をよく使っていましたが、最近のマルチコア CPU を綺麗にまわしきるにはちょっと荷が重いようなのでいろいろ探してみたところ、最近は OCCT というツールがよく使われているようです。
OCCT is a stability checking tool that was created back in 2003, and was regularly updated since. It enables you to fully test your computer's stability, using 4 different tests : CPU:OCCT and CPU:Linpack aimed at testing the CPU, GPU:3D for the GPU stability, and Power Supply, a combination of CPU:Linpack and GPU:3D to fully load your Power Supply.
これを使うと画像のように綺麗に全コア 100% でまわしきることが出来ます。CPU 温度も 80 度近くになりますし、冷却ファンもフル回転になるので、この状態でシステムが安定稼働するかどうかを見極めることができます。僕のマシンだと空冷なのでこれくらいが限界でしょうか。これで安定稼働してくれると良いのですが。。。。

jar を非圧縮にすると java アプリの起動が速くなるらしい


非圧縮の jar を使うと java アプリの起動が速くなるというテクニックが興味深かったのでメモ。
言われてみれば解凍の手間が減る分、確かに早くはなりそうですね。
JJBugでJava VMの起動高速化の話をしました - nekopの日記
Japan JBoss User Group - 灼熱の JBossでJava VMの起動高速化の話をしました。非圧縮jarによる高速化はみなさんも使っている有名なソフトウェアで採用されていますが、あまり知られていないチューニングだと思います。大抵の場合200%くらいの高速化ができます。
今度、ちゃんとベンチとってみようと思いますが、とりあえずスライドにあった flatjar という非圧縮 jar をつくるスクリプトだけ動くようにしてみました。
flatjar

mod_expires、mod_deflateによるサイトパフォーマンスの改善




このサイトにPage SpeedやYSlowをかけてみたら、パフォーマンスの改善方法としてページをgzip転送したほうが良いよとか、画像がキャッシュされるようにLast-ModifiedやETagを出力した方がいいよというアドバイスが出るのでちょっと改善してみました。
[mod_expires、mod_deflateによるサイトパフォーマンスの改善 の続きを読む]
TracLightningのチューニング


TracLightningを活用してプロジェクトを運営しているのですが、最近はすっかり空気のような存在なってしまっていて、みんな頻繁にアクセスするようになってきたせいか、デフォルトの設定のままだと運用がかなり辛くなってきました。
単に遅いだけならばちょっと待てば済む話なのですが、ページを開く際に「ページの読み込み中にサーバへの接続がリセットされました」というブラウザのエラーが出て、画面が開けなくなる現象が発生しており、これがチケットの更新時に発生すると、せっかく書いたチケットの内容がそのまま吹っ飛んでしまうので、とにかくこれが不評でした。
ということで、今回はTracLightningのチューニングに挑戦です。
[TracLightningのチューニング の続きを読む]
IPAがRubyのパフォーマンステストの報告書を公表




IPAがオープンソフトウェア利用促進事業の一環として、「自治体・企業等の情報システムへのRuby適用可能性に関する調査」を公表しています。
IPA、業務システムでRubyを用いるためのチューニング手法と課題を公表 | エンタープライズ | マイコミジャーナル
同検証の目的は、Rubyを用いた「入出力処理」、入出力処理によって構成される「アプリケーションとしての処理プロセス」を想定したベンチマークを取得し、幅広いアプリケーション開発にRubyを用いる際に参考となる計測データやチューニング手法とその効果を抽出することだ。
既にのRubyを活用している事業者にとっては、この報告書にはこれと言って新しい事が書いてあるわけではありません。ただ、こういうある程度ちゃんとしたプロダクト評価をやるにはそれなりに手間もかかりますし、実際に自分でやるとなるとやり方とか、報告書のまとめ方とかいろいろ悩む事はあります。SEであれば、そういう機会が一度や二度あると思うので、そのときに使うひな形として考えればこの資料は良くできているのではないでしょうか。

詳解 MySQL



新しいMySQLの本がオライリーから出るようです。「詳説 MySQL」だと思っていたら、「詳解 MySQL」でした。目次を読む限りで既刊本と違っているところは、内部構造についての本格的な解説書になっているところでしょうか。
oreilly.co.jp -- Online Catalog: 詳解 MySQL
しかし、優秀なプログラマたちのアイデアと努力の結晶であるソースコードを読み解くには、彼らのインスピレーションと努力の痕跡を知る必要がある。本書は、コードに秘められたプログラマたちのアイデアに触れながら、MySQLのソースコードを読み解くための指針を提供する。MySQL内部の詳細に踏み込むための手引書である。
MySQLのソースをいじるためにという使い方もあるのでしょうが、内部構造や設定についての詳細な解説があるので、どちらかというと内部構造を理解しながらMySQLを限界までチューニングしたいという場合には役立つ本になりそうです。そういう意味ではかなり上級者向けの本になりそうです。
[詳解 MySQL の続きを読む]
サイトのチューニングに YSlow for Firebug


USのYahoo! Developer NetworkにYSlow for FirebugというFirefoxの機能拡張が公開されていました。Firebugに機能を追加してウェブサイトのチューニングについてアドバイスをしてくれるようです。
YSlow analyzes web pages and tells you why they're slow based on the rules for high performance web sites. YSlow is a Firefox add-on integrated with the popular Firebug web development tool.
なかなか面白いですね。アドバイスの中にはUse a CDNのように「それはちょっと・・・・」というものもあれば、Add an Expires headerやGzip componentsのようにすぐに対応できるものもあります。決して高度な指摘をしてくれるわけではないですが、サイト改善のヒントとしては十分活用できると思います。
- Rufus Windows11 インストーラカスタム
- Rufus に Windows のインストールをカスタマイズできる機能がついてた
- Rufus Windows11 インストーラカスタム
- Rufus に Windows のインストールをカスタマイズできる機能がついてた
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110922)
3 . 年次の人間ドックへ(110486)
4 . 2023 年分の確定申告完了!(1つめ)(110034)
5 . 三菱鉛筆がラミーを買収(109934)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]