BLOGTIMES
» ArchiveList (Tag for "tuning" )
«Prev || 1 · 2 · | Next»
2021/02/06

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

linux  tuning  networking 

外部から多数のコネクションを受け付けるサーバが遅いと思ったら、コネクションを取りこぼしていました。

具体的には net.core.somaxconn の値が Linux 5.4 以前はデフォルトが 128 とかなり小さな値で、これがボトルネックになってしまっていました。このカーネルパラーメーターは TCP ソケットの listen() のバックログのキューの深さを表しているので、多数の接続を受け付ける場合にはこれを大きくしておく必要があります。

現在の設定値を確認するのはこんな感じでできます。

# sysctl net.core.somaxconn net.core.somaxconn = 128

そして、値の変更はこんな感じでできます。

echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf sysctl -p

プロセスが起動するときに 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.

    at 15:22 |
    2018/10/18

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

    mysql  tuning 

    あるプロジェクトで使っている MySQL(というか MariaDB)が遅いので、mysqldumpslow を使ってチューニングしてみました。

    mysqldumpslow*1 というのは slow ログファイルを解析して、要約を表示してくれるユーティリティで、これを使うと slow ログの中でもよりボトルネックになっているクエリを探し出すことができます

    まずは slow ログを MariaDB/MySQL に吐かせる

    mysqldumpslow を使うためには、対象となる slow ログ(時間がかかる SQL のログ)を手に入れる必要があります。
    通常の MariaDB/MySQL では、slow ログは以下のように無効になっているはずです

    MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'slow_query%'; +---------------------+------------------+ | Variable_name | Value | +---------------------+------------------+ | slow_query_log | OFF | | slow_query_log_file | hostname-slow.log | +---------------------+------------------+ 2 rows in set (0.00 sec) MariaDB [(none)]> SHOW GLOBAL VARIABLES LIKE 'long_query%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 2.000000 | +-----------------+----------+ 1 row in set (0.00 sec)

    これを以下のクエリによって書き換えてやります。
    設定は即時有効になりますが、再起動時には元に戻ります。常に出力する場合には my.cnf に定義を書込んでください。
    また、ここでは slow ログの閾値を 0.5 秒としていますが、場合によってはもっと小さくした方が良いかもしれません。

    SET GLOBAL long_query_time = 0.5; SET GLOBAL slow_query_log = 'ON'; FLUSH LOGS;

    slow ログを mysqldumpslow に喰わせる

    あとは出力された slow ログを以下のような感じで mysqldumpslow に喰わせると結果を得ることができます。

    mysqldumpslow /path/to/hostname-slow.log | less

    クエリ内の数値や文字列は 'S' や 'N' に置換されて纏められるので、slow ログの量が多くても出力結果はかなり少なくなっているはずです。あとはこの出力結果を EXPLAIN して、クエリの実行計画を見ながらインデックスなどを調整してやれば OK です。


    at 21:16 |
    2017/06/18

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

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

    Firefox 54 からマルチプロセス機能 Electrolysis(E10S) が有効化されましたが、僕の環境の場合には「ヘルプ」メニュー→「トラブルシューティング情報 ...」から確認してみると、マルチプロセスウィンドウは「アドオンにより無効」という表示になっていて有効化されていません。

    問題はどのアドオンが原因なのかということになりますが、これについては Add-on Compatibility Reporter を入れることで確認することができます。

    具体的な手順はアドオンをインストールして、アドオンの一覧画面を開くだけ。そうするとアドオン名の脇にマルチプロセスの対応/非対応が Compatible with multiprocess / Not compatible with multiprocess というメッセージで表示されるようになります*1

    これを見ると意外と非対応のプラグインが多いので、僕の場合は E10S への道のりは長そうです。もちろん無理やり有効化する方法もあるのですが、いろいろなところで不具合が出るのでオススメできません。


    at 22:30 |
    2015/03/25

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

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

    最近どうも PC の調子が悪いのですが、どうもオーバクロック設定の設定を AUTO にしているのが問題ということが分かってきたので、マニュアルでチューニングをすることにしました。

    オーバークロック設定のチューニングを行うときに必要になるのが、CPU をフル回転させるための負荷テストツール。シングルコアの時は Super Pi をよく使っていましたが、最近のマルチコア CPU を綺麗にまわしきるにはちょっと荷が重いようなのでいろいろ探してみたところ、最近は OCCT というツールがよく使われているようです。

    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 度近くになりますし、冷却ファンもフル回転になるので、この状態でシステムが安定稼働するかどうかを見極めることができます。僕のマシンだと空冷なのでこれくらいが限界でしょうか。これで安定稼働してくれると良いのですが。。。。


      at 21:55 |
      2013/09/07

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

      tuning  java 

      非圧縮の jar を使うと java アプリの起動が速くなるというテクニックが興味深かったのでメモ。
      言われてみれば解凍の手間が減る分、確かに早くはなりそうですね。

      JJBugでJava VMの起動高速化の話をしました - nekopの日記

      Japan JBoss User Group - 灼熱の JBossでJava VMの起動高速化の話をしました。非圧縮jarによる高速化はみなさんも使っている有名なソフトウェアで採用されていますが、あまり知られていないチューニングだと思います。大抵の場合200%くらいの高速化ができます。

      今度、ちゃんとベンチとってみようと思いますが、とりあえずスライドにあった flatjar という非圧縮 jar をつくるスクリプトだけ動くようにしてみました。

      flatjar

      #!/bin/bash # Example: $ find . -type f -name \*.jar | xargs -n1 flatjar set -e realpath() { DIRNAME=`dirname $1` PWDPATH=`cd $DIRNAME && pwd` FILEPATH=${PWDPATH}/$1 if [ -e $FILEPATH ]; then echo $FILEPATH else return 1 fi } JARFILE=$(realpath $1) TMPDIR=/tmp/flatjar.tmp echo "Fat $JARFILE" rm -rf $TMPDIR mkdir -p $TMPDIR (cd $TMPDIR; jar xf $JARFILE) if [ -f $TMPDIR/META-INF/MANIFEST.MF ]; then jar c0fm $JARFILE $TMPDIR/META-INF/MANIFEST.MF -C $TMPDIR . else jar c0f $JARFILE -C $TMPDIR . fi rm -rf $TMPDIR

        at 20:55 |
        2010/06/06

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

        httpd  server  tuning  rfc 

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

        [mod_expires、mod_deflateによるサイトパフォーマンスの改善 の続きを読む]

          at 22:35 |
          2009/10/17

          TracLightningのチューニング

          trac  tuning 
          ページの読み込み中にサーバへの接続がリセットされました - TracLightningのチューニング

          TracLightningを活用してプロジェクトを運営しているのですが、最近はすっかり空気のような存在なってしまっていて、みんな頻繁にアクセスするようになってきたせいか、デフォルトの設定のままだと運用がかなり辛くなってきました。

          単に遅いだけならばちょっと待てば済む話なのですが、ページを開く際に「ページの読み込み中にサーバへの接続がリセットされました」というブラウザのエラーが出て、画面が開けなくなる現象が発生しており、これがチケットの更新時に発生すると、せっかく書いたチケットの内容がそのまま吹っ飛んでしまうので、とにかくこれが不評でした。

          ということで、今回はTracLightningのチューニングに挑戦です。

          [TracLightningのチューニング の続きを読む]

            at 19:32 |
            2009/09/08

            IPAがRubyのパフォーマンステストの報告書を公表

            ruby  ipa  tuning  report 

            IPAがオープンソフトウェア利用促進事業の一環として、「自治体・企業等の情報システムへのRuby適用可能性に関する調査」を公表しています。

            IPA、業務システムでRubyを用いるためのチューニング手法と課題を公表 | エンタープライズ | マイコミジャーナル

            同検証の目的は、Rubyを用いた「入出力処理」、入出力処理によって構成される「アプリケーションとしての処理プロセス」を想定したベンチマークを取得し、幅広いアプリケーション開発にRubyを用いる際に参考となる計測データやチューニング手法とその効果を抽出することだ。

            既にのRubyを活用している事業者にとっては、この報告書にはこれと言って新しい事が書いてあるわけではありません。ただ、こういうある程度ちゃんとしたプロダクト評価をやるにはそれなりに手間もかかりますし、実際に自分でやるとなるとやり方とか、報告書のまとめ方とかいろいろ悩む事はあります。SEであれば、そういう機会が一度や二度あると思うので、そのときに使うひな形として考えればこの資料は良くできているのではないでしょうか。


              at 16:32 |
              2007/11/04

              詳解 MySQL

              tuning  mysql  oreilly 
              詳解 MySQL

              新しいMySQLの本がオライリーから出るようです。「詳 MySQL」だと思っていたら、「詳 MySQL」でした。目次を読む限りで既刊本と違っているところは、内部構造についての本格的な解説書になっているところでしょうか。

              oreilly.co.jp -- Online Catalog: 詳解 MySQL

              しかし、優秀なプログラマたちのアイデアと努力の結晶であるソースコードを読み解くには、彼らのインスピレーションと努力の痕跡を知る必要がある。本書は、コードに秘められたプログラマたちのアイデアに触れながら、MySQLのソースコードを読み解くための指針を提供する。MySQL内部の詳細に踏み込むための手引書である。

              MySQLのソースをいじるためにという使い方もあるのでしょうが、内部構造や設定についての詳細な解説があるので、どちらかというと内部構造を理解しながらMySQLを限界までチューニングしたいという場合には役立つ本になりそうです。そういう意味ではかなり上級者向けの本になりそうです。

              [詳解 MySQL の続きを読む]

                at 22:34 |
                2007/09/18

                サイトのチューニングに YSlow for Firebug

                firefox  tuning 

                USのYahoo! Developer NetworkにYSlow for FirebugというFirefoxの機能拡張が公開されていました。Firebugに機能を追加してウェブサイトのチューニングについてアドバイスをしてくれるようです。

                YSlow for 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 headerGzip componentsのようにすぐに対応できるものもあります。決して高度な指摘をしてくれるわけではないですが、サイト改善のヒントとしては十分活用できると思います。


                  at 23:51 |
                  «Prev || 1 · 2 · | Next»
                  » ArchiveList (Tag for "tuning" )