Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

チューニングに関するtsucchi1022のブックマーク (36)

  • YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

    なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S

  • ISUCON用にNYTProf+Prefork PSGI serverのベストプラクティスをコマンドにまとめた - Islands in the byte stream (legacy)

    これが価値を発揮するような出題ではなかったので結局つかいませんでしたが。あとでCPANizeはするつもりです。 てきとうなところで ^C でとめると結果を自動的に集計してreportをつくるところまでやってくれます。あくまでも開発用で、番用ではありません。 なおこれを使う場合、アプリ側で DB::enable_profile() / DB::disable_profile() を行う必要があります。tokuhiromのエントリも参照のこと。 #!/usr/bin/env perl # usage: plackup-nytprof --port 1982 app.psgi use 5.10.0; use strict; use warnings; use Cwd qw(getcwd); use File::Path qw(rmtree); sub run { my(@args) = @_;

    ISUCON用にNYTProf+Prefork PSGI serverのベストプラクティスをコマンドにまとめた - Islands in the byte stream (legacy)
    tsucchi1022
    tsucchi1022 2013/11/11
    ISUCON関係なく便利そう
  • Devel::NYTProf で Starlet/Starman (Plack) でうごくウェブアプリケーションのプロファイリングをおこなう方法まとめ - tokuhirom's blog

    Devel::NYTProf は Perl5 の世界でもっとも人気があるプロファイラである。表示が美麗であるし、ステップごとの処理速度が簡単にわかるのでとても便利だ。 そんな Devel::NYTProf であるが、Starlet/Starman のようなプリフォーク式のサーバーでうごくウェブアプリケーションとくみあわせる場合の方法論として、わかりやすい資料がみあたらなかったのでここに記すものである。 環境変数 NYTPROF を設定する Devel::NYTProf は環境変数で挙動を変えられる。 plack とくみあわせる場合には、以下のようにするとよい。 NYTPROF=sigexit=int:savesrc=0:start=no sigexit=int 通常、Devel::NYTProf は END { } ブロックでデータのファイナライズ処理をおこなうのだが、SIGNAL によっ

  • チューニンガソン5の復習 MySQL 5.6 新機能編 - SH2の日記

    というわけで、MyNA(日MySQLユーザ会)会 2013年3月に参加して発表をしてきました。とてもリラックスして話をすることができました。司会進行の坂井さんをはじめ日MySQLユーザ会のみなさま、日オラクルのみなさま、当日お越しいただいたみなさま、どうもありがとうございました。 私のセッションでは前回のエントリの続きということで、MySQL 5.6の新機能Optimizer Traceを活用しながら正攻法でのチューニングを行っていきました。とはいえ途中から正攻法ではなくなっていた気もします。MySQL 5.6でRDBMSとしての土台はしっかりしてきたと思いますので、今後は高度な統計情報を使用したSQL実行計画の最適化といったところにも機能強化が施されていくのではないかと期待しています。 プレゼンテーション資料 (PDF) EXPLAINとOptimizer Traceの出力結果 プ

    チューニンガソン5の復習 MySQL 5.6 新機能編 - SH2の日記
  • コンテキストスイッチの回数を調べる - Shohei Yoshida's Diary

    Starletのヘッダとボディを合わせて出力する閾値を変更してみる - Hateburo: kazeburo hatenablog この手の記事の話でコンテキストスイッチについて出てくることが あるけど、あまり数値が併記されているものがないように思えます。 その手のプロの人が言っているので、確かな情報だと思うのですが、 やはり数字を一緒に載せていただけるとより真実味が増すと思います。 プロセスのコンテキストスイッチ回数の確認方法(Linux) procfsから確認することができます % cat /proc/{目的のプロセスのPID}/status | grep ctxt voluntary_ctxt_switches: 145031 nonvoluntary_ctxt_switches: 13452自発的(voluntary)なコンテキストスイッチは、sched_yieldを呼び出した場合

    コンテキストスイッチの回数を調べる - Shohei Yoshida's Diary
  • muninの表示がクソ重くなっていたのを劇的に改善した話 - 元RX-7乗りの適当な日々

    某所の"munin"がびっくりするくらい画面表示が重くなっていて、ひょんなことから改善することになった話。 前提条件として、このmuninが動いているサーバは数百台のノード(サーバ)を管理している状態で、muninのバージョンは2.0系でした。 当は、後学のためにも作ってくれた人に直してもらうべきと思いつつ、あまり悠長なことも言ってられない感じだったので、一人チューニンガソンを敢行。・・・要望があったのでログを残しておきます。(遅くなってごめんなさい) 最初の状態(before) まず、muninのトップページですが、開いてみると、、、 うほっ、19.61秒かかっておりました。これはなかなかのストレスです。 特にHTML部分の出力に19.4秒かかっている。ここをなんとかせねばなるまい。 次に4台分のサーバの各リソースの負荷状況が確認できるページを表示してみると ズラズラと出ております。各

    muninの表示がクソ重くなっていたのを劇的に改善した話 - 元RX-7乗りの適当な日々
  • 全自動パラメータチューニングさん

    2013/02/18 Yahoo! Open Hack Day 参加作品 KLab賞 受賞 ソースコードはこちら: https://github.com/mirakui/tuningsan 説明: http://blog.mirakui.com/entry/2013/02/20/003401

    全自動パラメータチューニングさん
    tsucchi1022
    tsucchi1022 2013/02/18
    すごいと思うけど、ちょっと違和感感じるのは何でだろ
  • blog.nomadscafe.jp

    PHPの勉強会なので、いままでお会いしたことのない方とお話ができてよかったです。 発表内容は大きくなってしまったmaster.phpファイルをどうやって高速に読むかというお話です。PHPではリクエストの終了とともに全てのメモリを捨ててしまうので、変わらないデータもリクエストの度にキャッシュからロードしなくてはいけません。大きなphpファイルがあれば当然毎回の読み込みがオーバーヘッドとなってきます。そんな環境でどうやってアプリケーションのパフォーマンスをあげていったのかを紹介しています。 スライドの中でfile sizeを小さくする必要があると書きましたが、@hnwさんによると、VM命令が多過ぎるのが問題で、構造を簡単にしたことでVM命令が減ったのがよかったのではとのことでした。非常に参考になりました。ありがとうございました そろそろ傷が癒えてきた。。 ISUCON5の選にメルカリのインフ

  • 大量の接続がやってきた!ヤァ!ヤァ!ヤァ! - 元RX-7乗りの適当な日々

    ※ 以下、フィクションです。 はじめに: こんなサーバ(↓dstat) (裏バッチによりiowaitとLAが高いのは一時的な仕様とする) 気付けばログに・・・ Mar 29 18:08:02 hostname kernel: printk: 48843 messages suppressed. Mar 29 18:08:02 hostname kernel: TCP: time wait bucket table overflow Mar 29 18:08:07 hostname kernel: printk: 54962 messages suppressed. Mar 29 18:08:07 hostname kernel: TCP: time wait bucket table overflow Mar 29 18:08:12 hostname kernel: printk: 648

    大量の接続がやってきた!ヤァ!ヤァ!ヤァ! - 元RX-7乗りの適当な日々
    tsucchi1022
    tsucchi1022 2012/03/30
    tcp_tw_recycle って試してみたいのだけど、安定性の方はどうなのかなー?
  • DBサーバの場合のLinuxチューニング - shibainu55日記

    今回はLinux上でPostgreSQLMySQLなどのDBMSを使う場合のLinuxカーネルチューニングについて。共有メモリ(shmallやshmmax)については設計時にもれなく設定の確認などをしている場合がほとんどだと思うが、それ以外のTipsとして、今回はLinuxのメモリオーバーコミットに関する記事。DBMS向けと書いたが、Linux上で動作させるソフトウェアであればDBMS以外でも考慮に入れて設計すべきポイントである。 Linuxのメモリ管理 Linuxのメモリ管理サブシステムには「メモリオーバーコミット」と呼ばれる機構があり、マシンに物理的に搭載されているメモリ以上の領域を確保できてしまう。この動作については、メモリ確保の際(Cの場合)実際に使われるmallocを使ったサンプルアプリなどで実際に挙動を確認することができる。参考までに、あるサイトの方は以下のようなサンプル(a

    DBサーバの場合のLinuxチューニング - shibainu55日記
  • MySQLチューニング虎の巻/ソートに関連するトピックとクエリの書き換え

    EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

    MySQLチューニング虎の巻/ソートに関連するトピックとクエリの書き換え
  • INDEX FULL SCANを狙う - MySQL Casual Advent Calendar 2011 - SH2の日記

    2011年8月のkazeburoさんのエントリに対する解説記事です。結論から言うとkazeburoさんの案に賛成なのですが、日はどうしてそうなったのかというところを確認していきたいと思います。記事はMySQL Casual Advent Calendar 2011の17日目のエントリです。16日目はakira1908jpさんでした。 当時の内容を覚えていない方は、先にkazeburoさんのエントリをご一読ください。また、テストケースがGitHubに公開されていますのでカジュアルに再現試験をすることも可能です。 Covering Index と self-joinMySQL - blog.nomadscafe.jp kazeburo's gist: 1150842 - Gist 問題のSQLをチューニングするには、MySQLがインデックスに対してどのようにアクセスするかという点につ

    INDEX FULL SCANを狙う - MySQL Casual Advent Calendar 2011 - SH2の日記
  • クエリキャッシュを切ったほうがいイカ? ベンチマークしてみた - 酒日記 はてな支店

    カジュアル!(挨拶) このエントリは MySQL Casual Advent Calendar 2011 の18日目の記事です。 昔、専ら PostgreSQL を使っていた頃、MySQL のクエリキャッシュって簡単に性能上がるしみたいだし羨ましいなあ、と思っていました。そのため、1年ほど前から業務で MySQL を使うようになっても、クエリキャッシュは当然のごとく有効にしておりました。 ところが先日 DSAS開発者の部屋:クエリキャッシュは切ったほうがいいんじゃなイカ? というエントリを読みまして、クエリキャッシュはグローバルロックを獲得するとのこと。これはちょっと検証してみなければなるまい、ということでベンチマークをしてみました。 ベンチマーク結果 結果は別ページにまとめました benchmark script と my.cnf ざっくりと説明しますと、 平均 260 byte/行、1

    クエリキャッシュを切ったほうがいイカ? ベンチマークしてみた - 酒日記 はてな支店
  • クエリキャッシュは切ったほうがいいんじゃなイカ? : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の2日目は、昨日に引き続き、MySQLを骨までしゃぶるためのテクニックです。 ソーシャルゲームは一般サイトよりもDBへの更新クエリの割合が多くなりがちです。更新クエリが多いMySQLでは、通常は有益なクエリキャッシュが無益どころか有害になります。 そもそもキャッシュヒット率が低い。20%以下なんてこともザラにある しかもクエリキャッシュの更新はグローバルなロックを取得する からです。特に後者は問題です。ただの参照クエリもクエリキャッシュを更新する上に、更新クエリはクエリキャッシュの全エントリをチェックして、更新したテーブルに影響がありそうな全キャッシュをdiscardしていくためです。たとえばユーザーの行動力のようなパラメータを格納した参照も更新も多いテーブルでクエリキャッシュが有効になって

    クエリキャッシュは切ったほうがいいんじゃなイカ? : DSAS開発者の部屋
  • 過負荷をかわす Apache の設定 : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の9日目です。 前回は php を動かしている Apache の手前にリバースプロキシを 置く必要性を解説しました。 今日は、 その前の php のプロセス数を絞る設定と合わせて、実際に Apache で 設定する方法を紹介します。 以降、 php を動かしている Apache の事をアプリサーバー、リバースプロキシ+ 静的ファイル配信を行っている Apache の事をプロキシサーバーと呼びます。 基設定 まずは基的な設定のおさらいです。 アプリサーバー 並列数を絞るには MaxClients を設定します。アプリがどれくらいの時間を CPUの処理で使って、どのくらいの時間を外部リソース待ちに使っているかにも よりますが、だいたいCPU数の1.5倍〜2倍くらいが適当だと思います。 Hyp

    過負荷をかわす Apache の設定 : DSAS開発者の部屋
  • チューニンガソン2で2位でした : DSAS開発者の部屋

    10/1(土)にチューニンガソン2 というイベントに参加してきました。 もちろん前回に引き続き優勝を 目指していたのですが、今回は残念ながら2位でした。 今回もどんなチューニングをしていたのかの記録を公開します。 (ちなみに優勝したのは元KLabの濱野さんで、同じく メモを公開されています。) 今回のチューニンガソンのお題は、 Wikipedia の高速化で、 MediaWiki と Wikipedia の データが入った MySQL のデータには修正を加えずに、ランダムな100ページの表示速度を競いました。 マシンはメモリ1GBでデュアルコアのものが2台で、今回はWebサーバーの部分は自由に構成できます。 1. ボトルネックの確認 とりあえず AMI Linux の標準の php + apc で計測したところ、1ページの表示に1秒くらい使っています。 またphpか!ということで、やっぱり

    チューニンガソン2で2位でした : DSAS開発者の部屋
  • hamano's gist: 第2回 Tuningathon チューニングメモ

    tuningathon2_memo.txt Ђ�*V �,�*V # 第2回 Tuningathon チューニングメモ このメモは @hamano が [第2回 Tuningathon][1] に参加した際に行ったチュー ニングポイントと感想です。 [1]: http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GLmFBgw "第2弾!いろいろチューニングしてパフォーマンスを競うバトルイベント開催!「Tuningathon」2!! #tuningathon" 今回のお題は MediaWiki への参照性能という事でまたPHPか! とは思いました が2台構成可、Web Serverの入れ替え可、という条件でしたのでチューニングの 範囲が大きく広がった様に感じました。 ただ、この程度の平行数ではapacheをその他実装に置き換えた所で大した差

    hamano's gist: 第2回 Tuningathon チューニングメモ
  • ISUCONに参加してきた - inuzのブログ

    まずは運営のライブドアの皆さま、楽しいイベントをありがとうございました。 さて、俺id:inuzことTwitterID: inuwarumonoは同じ会社のアプリ屋2名と一緒に、チーム名「ツヤマ倶楽部」として出場してきたのでそのメモ/レポートを。 出場者3名とも名前はツヤマさんでは全然なくて、ツヤマというのは弊社技術部門の最高責任者の名前。(会社名は非公開)。 俺はインフラ/ミドルウェア屋なので、主にOSやらミドルウェアの最適化を考える担当。あとの2名はアプリケーション側からの切り口での改善と、それに伴うミドルウェアの最適化。両面からのアプローチというのが当初の作戦だった。 事前準備が肝、ということでツヤマ倶楽部の面々が考えていた事前対策は以下のとおり。 DBのクエリ解析が肝になるはず。的確にボトルネックを探すには断然クエリアナライザ。 パフォーマンスモニタリングが重要、でもまぁsarで良

    ISUCONに参加してきた - inuzのブログ
  • livedoor Techブログ : 自家製 #isucon のつくりかた

    こんにちは、ISUCON というイベントのレギュレーションを考えたり環境の準備をやったりコード書いたりしてた tagomoris です。普段はライブドア開発部のインフラサービス部というところで働いてます。 先日ISUCONは幸いにも大好評のうちに終了したのですが、へとへとになって疲れ切った状態で帰宅し、寝て起きてみると、公開しておいたソースコードをさっそく自分の手元で動かしている人がいました。説明とか何にもなかったのによくそこまで。どういうことなのと思わずにはいられません。 #isucon に参加してきました&isuconツールを試してみました - As a Futurist... また翌日にはTwitterでも続々と動かしてみた報告が見られ、エンジニアのみなさんのバイタリティには感服するばかりです。 ざいりょう で、せっかくだから番と同じデータで同じように試せるようにしたいよね、とい

  • にひりずむ::しんぷる - ISUCON に参加して FAIL してきました!

    ISUCON に @myfinder と @__gfx__ と共に参加してきました。 一部からは、下馬評でチートチームなどと言われのない誹謗中傷を浴びせかけられていましたが、結果としては、以下のようにあっさりと文字化けして終わったため、ある意味期待を裏切らなくてよかったのかなと思います。 さて、結果は全然伴わなかったわけですが、当日にやろうとした & やったことなんかを適当に箇条書きにしてみます。 とりあえず、public key 巻いて ssh config を設定して環境に入りやすくする 最初にベンチ走らせたときに DB が完全に刺さっていた slow log でクソクエリー発見 直すと速くなるだろうけど、パッと見よくわからなかったので、memcached にキャッシュしちゃえばいいんじゃね戦略でキャッシュする 最初に app サーバーの local に memcached 立てたけど