サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大そうじへの備え
tmatsuu.hatenadiary.org
もはやこのブログはISUCON参加記に成り下がってしまってますが。 今年も@ishikawa84g 、@netmarkjp、@matsuuの3人でISUCON8に挑んできました。このスコアじゃ今年も本選進出は難しそうですね。がっくし。 チーム名のとおり、DisabledだったSELinuxはEnforcingにしてフィニッシュです。 やったこと 3人で作業分担をしてたので、基本的に自分がやったことをまとめます ベンチ前の準備スクリプトとベンチ後の集計スクリプト(kataribe, pt-query-digest)を用意 getEvent内のN+1をやっつける ORDER BY RAND()を消してみたもののランダムじゃないと怒られるので差し戻し sheetsは増減しない上にsheet_idから算出できるので、できるだけ利用しないように実装変更(sheetsひっぺがし) /api/users
Webサービスをいい感じにパフォーマンスチューニングするコンテスト ISUCON7予選1日目に @netmarkjp, @ishikawa84g, @matsuu でチーム「ババウ」にとして参加しました。最終スコアは 205148 でした。 考察 netmarkjp 例年通りの役割分担がしっかり機能して気持ちよくできた 視点を変えたり休憩とったりがいい感じにできた 去年の何もできなかった無念は多少供養できた 練習をきちんと活かせた ベンチが安定しててすごくよかった BGMは東京スカパラダイスオーケストラでした matsuu トラフィックがボトルネックになる問題をなかなか解決できずにいたが、Cache-Controlにpublicを入れることを思いつけた 304応答が安定して発生しない理由が生成される画像の更新日時がサーバ毎に異なるためであることに気づけた自分を褒めてあげたい tcpdump
著者である @ryosuke927 さんからご恵贈に与りました。感謝。 Linuxステップアップラーニング 作者: 沓名亮典出版社/メーカー: 技術評論社発売日: 2017/04/11メディア: 大型本この商品を含むブログを見る Ubuntu 16.04 LTSをベースにLinuxの基本操作を学べる初心者向け書籍ですが、この本の素晴らしいところはほぼすべてシェルでの操作方法をまとめ上げてるところ。現場主義の一冊として素晴らしい。 環境構築としてVirtualBoxを紹介するのも理にかなってるんですよね。ドライバなど本筋とは異なる部分で躓くのは実にもったいないので現実的で良いと思います。 ただ、この書籍の1つ残念なところは、pp.12-13の「主なLinuxディストリビューション」にGentooがないところですね。マジか。今やChromebook*1やDockerホスト*2、Pepper君*
@matsuu #isucon ご協力いただき誠にありがとうございました!チームとしては残念な結果となりましたが、予選において多大なるご尽力をいただきましたのでmatsuuさんを名誉運営として本選にご招待したいと思います(本選出場ではなく運営としての参加です)ご検討くださいませ— ISUCON公式 (@isucon_official) 2016年9月18日 この話を頂いた時は正直「名誉運営とは」と思ったのですが、本選に進むつもりで予定も開けてたしと二つ返事で引き受けることにしました。 本選運営のお手伝いとしてやったことは以下のとおり。 Azure関連 CIの構築 Python実装 自分の知見に基づくアドバイスなど Azure関連 Azureの特性を踏まえた上での構成検討やワンクリックデプロイのためのテンプレート作成などを行いました。 予選ではデプロイの仕組みにcustomData使われてい
AppArmor Goとして @netmarkjp, @ishikawa84g, @matsuu で参戦しましたが残念ながら去年に続き予選敗退(推定)となりました。最終スコアは24000ぐらいです。 序盤 デプロイが終わって何も変更していない状態(デフォルトのperl実装)でベンチマーク回す →スコア0 Go言語に切り替えてベンチマーク回す →スコア0 MySQLに適切なインデックス追加、htmlifyの正規表現生成を切り出してentryの追加/削除があるまで正規表現をキャッシュして使いまわす →スコア0 えーこれでもダメかーと思いつつ昼食で気分転換。 中盤 昼食で思いつきました。 初期状態でentryごとにマッチするキーワードを予め抽出してキャッシュし、entryの追加/削除があるごとにentryごとのキーワードキャッシュをいい感じに調整することで正規表現生成のコストを下げようとする →
前回の記事もISUCONネタだったmatsuuです。ISUCONのことしか書いてないがな。 ISUCONで良いスコアを叩き出すためには過去問を解くことが大事と1年前にも書かせて頂きましたが、今回も様々な環境で過去問にチャレンジできるようにしました。どうぞご査収ください。 Microsoft Azure 今回のISUCON6はMicrosoft Azure上で行われるということで、Azure用テンプレートを用意しました。クリックするだけでAzure環境にデプロイが可能です。 https://github.com/matsuu/azure-isucon-templates ISUCON5予選とPixivさんの社内ISUCONをデプロイするテンプレートを用意しております。 内部的には真っさらなOS上でAnsibleによるプロビジョニングを行っているため構築に1時間弱かかりますのでご了承下さい。
「チームSELinuxはEnforcing」としてishikawa84g、matsuu、netmarkjpの3人でISUCON5に参加したものの、スコアが伸びず予選敗退となりました。 最終スコアは3886。構成はVarnish+Python+MySQLでした。 ちなみにUbuntuだったためSELinuxはインストールしておらずEnforcingにしてません。すみません。でもAppArmorは有効にしたままだよ! 当初はGo言語で実装する予定だったものの、運営からGo言語の実装にはバグがあるとの事前通知があったため、バグ解消に時間をとられるのを嫌ってPythonを選択しました。しかしPythonの知見が乏しくツラい感じでした。選択ミスった…。 やったことはMySQLのチューニング、nginx→Varnishの差し替え、SQLのチューニングなどです。 VarnishにしたのはESIで部分キャ
今年のISUCONは「チームSELinuxはEnforcing」で参加するmatsuuです。 前回のエントリーでISUCON過去問を再現できるようにしましたが、予選時と異なるスペックでどこまでスコアを上げればいいのかわからないという問題がありました。 そこで、ほぼ予選通過のスコアを再現できるVagrantとAnsibleを用意しました。 https://github.com/matsuu/vagrant-isucon-pass https://github.com/matsuu/ansible-isucon-pass 現在はISUCON4予選のみ用意してます。ISUCON3予選は…まぁそのうち。 使い方 vagrant-isucon-passからVagrantfileをダウンロードしてvagrant upでokです。 既にvagrant-isucon(ansible-isucon)で構築し
タイトルでいいきった。 ISUCON5参加者へのアドバイス まもなくISUCON5が開催されますね。 毎年参加して予選突破を果たしている私からのアドバイスは、過去問を解いてチューニング力を高めることが重要です。これホント大事。 過去問やってる? ですが、ISUCONの過去問はAWS用AMIとソースコード一式が用意して提供されているものの結構難しいんですよね。 AWSの利用は課金がつらい(特に学生) AWSの利用はクレジットカードが必要でつらい*1 ソースコードから構築する方法がわからない(AMIの中身を見ないとわからないこと多数) 無料で過去問やろう そこで無料かつ簡単に手元で構築できるよう、VagrantfileとAnsible用Playbookを用意しました。 https://github.com/matsuu/vagrant-isucon/ https://github.com/ma
TL;DR 申し込みはこちらから はじめに Let's Encryptが2015年9月14日の週から利用可能になる予定だったり、さくらインターネットがRapidSSL証明書1年分無料キャンペーンを展開するなど最近盛り上がりをみせるSSL証明書業界ですが、今ここに新たな救世主がやってきました。 それが中国系SSL認証局の沃通(WoSign)が提供するWoSign Free SSL Certificateです。 WoSign Free SSL Certificateの仕様 WoSign Free SSL Certificateは3年間無料、しかも1つのSSL証明書でマルチドメインに対応しています(100ドメインまで)。ま、マジで! 通常こういったマイナーな認証局が発行するSSL証明書はサポートするブラウザが極端に少なかったりするのですが、クロスルート方式でStartSSLをルート証明書にもつこ
元ネタはこちら。 Apache AddHandler madness all over the place Gentoo Bug 538822 どういうことか 次のような指定は危険である。 AddHandler php5-script .php この時に指定される.phpはファイル名の末尾である必要はない。例えば、 aaa.php.html bbb.php.pngなどもphp5-scriptとして解釈されてしまうのだ。これは.XXX.YYYと複数の拡張子が書かれた場合、.XXXと.YYYもAddHandlerの対象となることが原因。 ちなみに次のような場合にはphp5-scriptとして解釈されない。 ccc.php_foo (.php_fooとして解釈されるため) ddd.php_bar.html (.php_barと.htmlとして解釈されるため)実はこのことはApacheのドキュメン
いい感じにパフォーマンスチューニングするコンテスト第4回ISUCONの本戦に「ご注文はPHPですか?」として参加しました。最終スコアは26位の6598です。途中の最高スコア(remote)は8000強ぐらい。 ↑ピンクの線です。 メンバー アイコン Twitter @do_aki @matsuu @netmarkjp 職業 インフラエンジニア インフラエンジニア インフラエンジニア 得意言語 PHP Perl Python 当日の役割 右腕 左腕 ファシリテータ 予選のblog こちら こちら こちら 本戦のblog こちら こちら こちら 予選はGo言語で実装しましたが、本戦もGo言語で臨みました。 事前準備(プロファイラ編) アクセスログを解析するプログラムをnetmarkjpせんせいがPythonで実装したものをGo言語で再実装しました。名前はあとづけですがkataribe(語り部)
今までSSL(TLS)のciphersuite設定はmozilla wikiのSecurity/Server Side TLS]の記述を個人的に推奨してきましたが、Historyを追ってるとたまに迷走してるし、今の設定が本当に良いのか怪しくなってきたので、もう FIPS@STRENGTH:!aNULL:!eNULLでいいんじゃないかと思いました。 FIPS準拠、PCI準拠になるし。 https://matsuu.net/ は2014年10月現在このciphersuiteを実践中です*1。 反論お待ちしております。 追記:ciphersuite以外の設定は引き続きmozilla wikiのSecurity/Server Side TLS]を参照するか、Generate Mozilla Security Recommended Web Server Configuration Filesをオス
いい感じにパフォーマンスチューニングするコンテスト第4回ISUCONに参戦しました。まだ現時点で本戦に進めるのかわからないのですが、1日目で暫定10位になりました。 PHPでも十分に戦える!と思った方、ごめんなさい。Go言語使いました。 チーム紹介 チーム名 ご注文はPHPですか? チーム略称 ごちぺち 予選スコア 44000〜45000ぐらい(暫定) メンバー アイコン Twitter @do_aki @matsuu @netmarkjp 職業 インフラエンジニア インフラエンジニア インフラエンジニア 得意言語 PHP Perl Python 当日の役割 右腕 左腕 ファシリテータ えぇ、ぺちぱー(PHPer)で有名なdo_aki先生がいるチームですが、Go言語を使いました。 役割分担大事。特にファシリテータ大事です。fujiwara組もたぶんfujiwaraさんがファシリテータだと思
Dockerfileの練習も兼ねて、DockerでPublic JNetHack serverを立ててみました。UTF-8対応のtelnetクライアントを用意して、 telnet nethack.matsuu.net でJNetHackをプレイできます。全プレーヤー統一ランキング機能があるみたいです。 詳しくはこちら → https://matsuu.net/nethack/ Docker環境があれば誰でもPublic JNetHack serverを用意できます Docker Hubに登録したので、誰でもサーバを用意できます。 docker run --detach --publish=23:23 matsuu/jnethack-server 同じインスタンスを使っている限りはアカウントとセーブデータは残ります。 詳しくはこちら → https://github.com/matsuu/d
nginxのアクセスログやエラーログをsyslogに直接飛ばす機能は商用版のNGINX Plusでのみ提供されていたのだが、1.7.1でオープンソース版にもその機能が取り込まれた。 CHANGES Changes with nginx 1.7.1 27 May 2014 *) Feature: the "error_log" and "access_log" directives now support logging to syslog.早速試してみた。 docker-nginx syslogサーバのホスト名は仮にlogserverとする。 Dockerfile FROM centos:latest ADD nginx.repo /etc/yum.repos.d/ RUN yum install -y nginx ADD access_log.conf /etc/nginx/conf.d
FC2ブログがオープンソースになったと聞いたので、Dockerfileの作成練習も兼ねてDockerで構築してみた。ソースはこちら。 https://github.com/matsuu/docker-fc2blog/ ベースOSとしてCentOS版とUbuntu版を用意した。 工夫したこと Link Containerを使ってMySQLとApacheを接続している できるだけ環境変数でパラメータを渡せるようにした できるだけDockerfileファイルにすべて収まるようにした 複数のApache/MySQLが起動してもできるだけ大丈夫なように調整(かぶるのは外向けの80番ポートのみ) ここ数日で身につけたノウハウをすべて注ぎ込んでみた 作ってみてわかったこと FC2ブログのdomain(Cookie)周りがアレな実装なのでドメイン名を渡す必要があってアレ HTTP_HOSTを使うようにした
最近になってようやくDockerに目覚めまして、本番環境にDockerを使った場合の監視方法などを模索している今日このごろ。 ちょうどオープンソースカンファレンスでさくらのクラウドの2万円分無料クーポンをもらった*1ので、さくらのクラウドにGentooベース(のChromeOSベース)で有名なCoreOSを載せてDocker環境を構築してみた次第。さくらさんありがとう!ありがとう!ありがとう! どうすればCoreOSを構築できるか さくらのクラウドではKVM/QEMUを使用しており、CoreOSはQEMU用イメージを用意しているものの、ホスト側を操作できるわけではないのでこの方法は取れない。 そこでInstalling CoreOS to Diskを参考に構築することにした。 CoreOSを起動するサーバをまず用意する さくらのクラウドはDHCPでIPアドレスが取得できず、またCoreOS
Appleの初売りに並んでる皆様、寒い中お疲れ様です。寒いですね!ツライですね! そんな時は最新のMac ProのCPUをぶん回せば暖かくなるかもしれませんね! え?インターネット接続環境がないからベンチマークソフトをダウンロードできない?大丈夫、Mac OS Xに標準で含まれているソフトウェアでお手軽にCPUをぶん回すことが可能です。 Finder→アプリケーション→ユーティリティ→ターミナル CPUが論理12コアの場合 openssl speed -multi 12 CPUのコア数がわからない場合 openssl speed -multi `getconf _NPROCESSORS_ONLN` これでしばらくはCPU負荷がガンガンかかり、Mac Pro上部の排気口がほのかに暖かくなりますよ!良かったですね!良かったですね! もしかしたらアップルストアの店員さんがMac Proを用意して
タイトルで言いたいことはすべて言った。 経緯 うちの場合はLVS+keepalivedなロードバランサなんだけど、ちょくちょくkernel panicになる問題が発生してた。 そこでcrashコマンドで解析してみた。crashコマンドの使い方はこちらが参考になる。Linux crash dump 読み方入門 # crash /boot/System.map-2.6.32-279.14.1.el6.x86_64 /usr/lib/debug/lib/modules/2.6.32-279.14.1.el6.x86_64/vmlinux /var/crash/127.0.0.1-2013-09-27-16\:21\:01/vmcore (snip) SYSTEM MAP: /boot/System.map-2.6.32-279.14.1.el6.x86_64 DEBUG KERNEL: /usr
先日AWSから新しいEC2インスタンスタイプc3.8xlargeが発表されましたね。 【AWS発表】 新世代の数値計算向けEC2インスタンス 2013年11月時点の性能と価格は以下のとおり。ISUCON予選で使用したm3.xlargeと比較。 インスタンスタイプ vCPU ECU Memory(GiB) Tokyoリージョンの1時間あたりのオンデマンド価格 m3.xlarge 4 13 15 0.684ドル c3.8xlarge 32 108 60 3.064ドル CPU性能約8倍、メモリ4倍。価格約4.5倍。c3.8xlargeお得。 さて、オンデマンドの価格は上のとおりですが、開始後すぐのためか需要が少なくスポットインスタンスが激安なんですね。 Amazon(Web Services)が大セール!c3.8xlargeがなんと!$0.0001!! 新しいHPC向けAmazon EC2イン
11月9日に開催されたisucon3本選にチーム「└('-'└)└)└)<HEARTBEATS」*1として参加してきました。 結果は惨敗だったのですが、当日やったことと、予選本選を通して得た知見を書き留めておきます。 当日やったこと 画像のサムネイル作成をなんとかするためImager使ったら孔明の罠 ベンチマーク中にtopを眺めているとconvertコマンドがボトルネックになっていたのでここをなんとかしようと試みてみました。 convertを呼び出す代わりにImagerを使ってサムネイルを作成してみたのですが、Imagerだと差分検出でエラーになってしまいました。見事な孔明の罠ですね。やられた。 Image::Magickのインストールに手間取る Imagerが差分検出で引っかかるので早々にあきらめてImage::Magickを使おうとしたのですが、cpanfileに requires "
規制されてないのに2chに書き込めない原因判明 スレを読み進めていくと、どうやら 206.223.144.0/20 207.29.224.0/19 からのTCPポート 443 995 1723 へのアクセスをフィルタすれば書き込めるらしい。 書き込むたびにTCPポートスキャンをしているの?と興味が湧いたので調べてみた。 ちなみに元記事には情報源スレッドのURLが記載されているが、読み方がわからなかったので読んでない。 Twitterに全部書いたので再掲 2ch側からTCPポートスキャンがされる件を検証してみた。「書き込む」のボタンを押したらすぐにポートスキャンきた。207.29.225.225からTCPポート443、995、1723にSYNきた。クッキーを持ってない場合に届く模様。クッキー削除したらまたきた。— └('-'└)└)└)<matsuu (@matsuu) November 2
ISUCON3の予選にチーム└('-'└)として参加してきました。スコアは10784.5で暫定15位、問題がなければ本戦に進める予定です。 以下、やったことをつらつらと。 チーム編成 今回は職場の同僚であるyamasakiさんとfujiwaraさんと私の3人で参戦しました。自分以外は初参加だったため、本戦を見越してOJTで進めました。残念ながらSELinuxはdisabledです。 ちなみに弊社からは学生枠暫定2位のチーム( (0) / (0)) ☆祝☆も参戦しています。 事前準備 前日の夕方、Amazon Management Consoleで、AMIの選択からログインするところまでシミュレーションをしておきました。 ちなみにその際にAmazon IAMで自分以外のアカウントも作り、3人のうち誰でもログインできるようにしておきました。もしAMIの作成も時間内に行う必要があるのであれば、作
2012年10月ごろから海外の技術ネタが集うHacker Newsを読んで、気になる記事をはてブに登録するだけの簡単なお仕事を続けている。 本家RSSをベースに、リンク先のコンテンツを可能な限りRSSに取り込んだものを生成してFeedlyで読んでいる*1のだが、このRSSは流量が多い。先ほど数えてみたところ過去1週間分で748件あった。 そこで私がどうやって読んでいるかについて紹介してみようと思う。 タイトルだけを見てふるいにかける仕組みづくり 記事数が多いと1つ1つの記事に目を通していては時間がいくらあっても足りない。特に母語でない記事はどうしても読むのに時間がかかってしまう。なので出来るだけタイトルから見ないものを判別できる仕組みをまず用意することが重要。 試行錯誤の結果、一番高速に読む方法はスマートフォンの活用だった。私の場合はAndroidのFeedlyアプリだが、以下のような設定
先日ツチノコブログでクロスルート証明書の確認にIE6を使ってる話が紹介されてた。 確かに実機で確認するのは大事なのだが、SSL証明書が正しくインストールされているかチェックしてくれるサービスがいくつかある。 それで確認すればいいんじゃね?と思って調べてみたが、実はクロスルート証明書まで調べてくれるサービスは少ない。また各社チェックしてくれる内容が結構違う。 そこでオススメのSSL証明書チェックサイトを3つ厳選してみた。 Qualys SSL Labs SSL Server Test クロスルートを含む複数のチェインを表示してくれるのは試した限りここだけだった。 また、クロスルート以外にも脆弱なプロトコルや暗号アルゴリズムを使用していないか、BEAST、CRIME、Lucky13、BREACHなどの攻撃に対して対策されているかなども調べてくれる。 グレード表記や項目別スコア表示もあり。最低限
まずはこちらをご覧ください。 Google先生の検索結果リンクが予想以上に作り込まれていた件 一部引用 まとめ (略) Google先生の検索ページはhttpsでも遷移先のhttpページにRefererを送信しています。 検索結果のリンクは302 FoundのRedirect処理をせずに、200 OKのhtmlを返します。 200 OKのhtmlページでは本来の遷移先ページを読み込む処理が書かれていて、200 OKのURLから遷移したようにRefererを送信しています。ただしRefererの検索Queryパラメータのq=は予め削除されています。 (略) なるほどー。 200 OKのページでwindow.location.replace()を使うことでブラウザのhistory遷移でも問題が出ないようにしてるのねと関心したのだが、実はブラウザごとに異なるとの情報を@dancerj先生から教え
ステルス設定の無線LANアクセスポイントにwpa_supplicantからうまく接続できなくて悩んでた時期が私にもありました。 でもふと調べてみると、wpa_supplicantのサンプル設定ファイルに書いてあった。 wpa_supplicant.conf # scan_ssid: # 0 = do not scan this SSID with specific Probe Request frames (default) # 1 = scan with SSID-specific Probe Request frames (this can be used to # find APs that do not accept broadcast SSID or use multiple SSIDs; # this will add latency to scanning, so enabl
Amazon EC2のインスタンスにスケジュールされたイベントはAmazon EC2 API Toolsに含まれるec2-describe-instance-statusで取得できるんですが… Amazon EC2 API Toolsはとにかく起動が遅い 遅い。とにかく遅い。洒落にならんぐらい遅い。やってらんねー!とお嘆きの全国1億2000万人の皆様、いかがお過ごしでしょうか。 そこでcheck_ec2_eventsですよ そんな折、Pythonモジュールのbotoを使ったNagios用プラグインcheck_ec2_eventsなるものを発見。よーしこれで我々も勝つる!大丈夫だ!もっと監視できる! がしかし check_ec2_eventsはリージョン指定ができなかったり(us-east-1固定)、複数インスタンスがあるとインスタンスの数だけAPIを消費するという残念実装。これはあかんやつ
次のページ
このページを最初にブックマークしてみませんか?
『このブログはURLが変更になりました』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く