タグ

ブックマーク / developer.cybozu.co.jp (13)

  • Kazuho@Cybozu Labs: TCP通信ではデータの送信をまとめて行うべき、もうひとつの理由(& サーバのベンチマーク手法の話)

    TCP通信をするプログラムを書く際に「データの送信はまとめて1回で」行うべき、というのは鉄則と言っていい、と思います。その理由としては、パケット数を最小限に抑えることでオーバーヘッドを少なくするためだと一般に説明されますが、自分はもうひとつポイントがあると考えています。次のグラフを見てください。 グラフは、一定量のデータを転送するのにかかる時間と使用するブロックサイズ(1回のwrite(2)で書き込むサイズ)の関係を表したものです注1。 ホスト間のTCP通信を行っている場合は、TCPのバッファが有効に機能するので、ブロックサイズ(=パケット数の逆数)による速度の変化は、ほぼありません。一方、同一ホスト上で通信を行うと、ブロックサイズと反比例して所要時間が反比例の関係にあることがわかります。 原因は、同一ホスト上の通信では、送信プロセスがwrite(2)を呼ぶたびにコンテクストスイッチが発生

    yass
    yass 2013/10/21
    " 同一ホスト上で通信を行うと、ブロックサイズと反比例して所要時間が反比例の関係にあることがわかります。原因は、同一ホスト上の通信では、送信プロセスがwrite(2)を呼ぶたびにコンテクストスイッチが発生 "
  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

    yass
    yass 2013/05/20
    "1コネクション1スレッド、という選択肢が現実的 / マルチプロセッサ対応は必須ですから、マルチスレッド(マルチプロセス)+イベント駆動の二階建てにするよりも、1コネクション1スレッドのモデルの方が必然的に単純"
  • Cybozu Inside Out: Cybozu CrossSync - 2つのサイボウズ製品のスケジュールを同期

  • Kazuho@Cybozu Labs: REST におけるトランザクションについて (Re: Web を支える技術)

    といいつつ、ひとつだけ理解できないというか、納得できないところが。トランザクションのところがなんだかRESTっぽくないのがすごく気になる Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESSプラスシリーズ)(山 陽平) - ただのにっき(2010-04-23) 「Web を支える技術」は自分もとてもいいだと思う (教科書としてすばらしいし復習用としても読みやすいのでイイ) のですが、トランザクションの所だけは分かりづらいなと感じました。その原因は、atomic transaction で解決できる課題を例として使っているという点と、トランザクションと更新クエリのレイヤ分割がされていない、という2つの点によるものではないでしょうか。 HTTP 上でトランザクションを表現する必要があるケースのほとんどは、atomic transaction ではなく

  • Kazuho@Cybozu Labs: MySQLをロックしてほげほげするツール「mysqllock」を書いた

    MySQLを使っていると書込みロックをかけてバックアップを取る、ってのは一般的だと思います。実際、標準添付の mysqlhotcopy や Xtrabackup もそういうことをやっています。 しかし、これらはいずれもロックの管理とバックアップ処理が密結合になっている(ですよね?)のが玉に瑕。 特にボリュームレベルのスナップショット機能を使ってバックアップを取る場合、スナップショットを取るためのコマンドは環境(LVM とか XenServer とか VMware ESXi とか...)によって異なるので、ロック管理とバックアップコマンドは疎結合にしておきたい。と思ったので、書くことにしました。というか、疎結合なのを探すより書いたほうが早かった。コードはこちら↓。 使い方は、以下のとおり。setlock 風のインターフェイスなので、慣れている人には簡単だと思います。 % mysqllock

  • Kazuho@Cybozu Labs: MySQL のボトルネックを統計的に監視・解析する方法

    MySQL のチューニング、と言った場合には、サーバーパラメータの調整や EXPLAIN コマンドを利用したクエリ実行計画の最適化が話題に上ることが多いです。しかし、発行する全ての SQL について、いちいち EXPLAIN コマンドを使って確認していては、いくら時間があってもたりません。チューニングを効率的に進めるには、まず、ボトルネックとなっている SQL クエリを特定し、次にその最適化を行うべきです。 ではどのようにして、ボトルネックを特定するのか。MySQL Conference & Expo 2009 のキーノートにおいて Mark Callaghan 氏は、Google では SHOW PROCESSLIST コマンドを使った統計的アプローチを使っていると述べていらっしゃいます (参照: MySQLConf 09: Mark Callaghan, "This is Not a

  • Cybozu Inside Out: グループウェアのログデータを分析対象とした、 PL/Rを用いたデータマイニングWebアプリの実現(1)

    グループウェアのログデータを分析対象とした、 PL/Rを用いたデータマイニングWebアプリの実現(1) アブストラクト: 新入社員が受ける一ヶ月の開発研修で、PostgreSQLとR言語を統合し、PL/Rを用いてデータマイニングのWebアプリを実装しました。また、サイボウズ社内で使用している「サイボウズガルーン2」のWebサーバーのログデータを分析してみました。ここで、これらの技術について、紹介したいと思います。 キーワード: グループウェア、ログデータ、Webアプリケーション、データマイニング、可視化 初めまして、周と申します。2009年2月に「ポスドク採用枠」(ポスドク枠)で入社し、現在は開発部に所属しています。今回、開発部業務研修で実装したデータマイニングWebアプリやログデータ分析についての技術を紹介したいと思います。 サイボウズでは、ポスドク枠で採用される新入社員は、約1ヶ月の人

    Cybozu Inside Out: グループウェアのログデータを分析対象とした、 PL/Rを用いたデータマイニングWebアプリの実現(1)
  • Visual REGEXP 正規表現のマッチング確認ができるクライアントツール | 秋元@サイボウズラボ・プログラマー・ブログ

    Visual REGEXPは、上の段に正規表現を入れて、下の段にいろいろな文字列を入れると、文字列のどの部分が正規表現のどの部分にマッチしているのか、というのを色づけして示してくれるツール。 Tcl/Tk製で、Windows向けのexeパッケージも配布されている。Windows版でためしてみた。 書いた正規表現をいろいろなサンプルで確認する際に楽でいいかもしれない。 ネットがつながっていれば、Rex Vとかでもいいような気はするけど、クライアントツールなのでネットがつながらないところでも使えるのはいいかもしれない。 ただ、文字列群から逆に正規表現案を生成する機能がエラーで動かなかったり、正規表現を書くボックスで外から中へのコピペができなかったり、あまりUIが使いやすくない。このへんは今後に期待か。 via del.icio.us/popular この記事は移転前の古いURLで公開された時の

    Visual REGEXP 正規表現のマッチング確認ができるクライアントツール | 秋元@サイボウズラボ・プログラマー・ブログ
  • TouchGraphによるブロガー相関図 | 秋元@サイボウズラボ・プログラマー・ブログ

    via del.icio.us/popular TouchGraphという可視化技術の会社が、Google(やAmazonやFacebook)で得られる関係性をビジュアルに表示するJava Appletのデモを公開している。 TouchGraph Google Browserのページから、中央のボックスに検索用語やウェブサイトのURLなどを入れ、”Graph It!”ボタンを押すと、Javaアプレットが立ち上がってグラフが描画される。(Java 1.5以上のインストールが必要) このブログを入れてみたのがこれ。残念ながら指定されたフォントでは日語が表示されないので、アイコンだけの表示にしてみた。Googleが判定する、このブログと関係のある他のサイトやブログが、関係のあるもの同士が結ばれて表示される。 faviconがないところはブログタイトルを表示しようとして豆腐が出るけど、自分のブロ

    TouchGraphによるブロガー相関図 | 秋元@サイボウズラボ・プログラマー・ブログ
  • 秋元@サイボウズラボ・プログラマー・ブログ: Yahoo! UI Library はすごいね

    via O’Reilley Radar Yahoo! UI Library で、Yahoo! が実際に使っている Javascript のライブラリ集が公開されている。 Yahoo! のどこでこんなユーザインタフェースが使われてるんだろう? と思うぐらい、サンプルで見せられる UI パーツは豊富だ。それぞれの “Example” を見てまわるだけでもおなかいっぱいだ。 コアユーティリティ アニメーション クロスブラウザ対応の XMLHttpRequest ラッパ DOM 操作 ドラッグアンドドロップ イベントハンドリング UI コントロール部品 カレンダー スライダー ツリー ドラッグアンドドロップなんかは、ファンタジースポーツで使われているのを見たことがあるので知っていた。複数のリスト間でアイテムの移動や並べ替えを行うときには使えるパーツだろう。 日語カレンダーなんかも、いい感じで再利

  • BlogCode/StoryCode ブログ/本のレビュー共有サービス | 秋元@サイボウズラボ・プログラマー・ブログ

    via del.icio.us/popular 新しく登場した BlogCode は、ブログのレビューを共有して、似たブログの推薦を受けるための共有レビューサービス。 “Code Blog”というメニューから、好きなブログのタイトルと URL を入力してレビューは開始できる。 一つのブログについて、国名から始まり、 国際性/地域性 更新頻度 文字の多さ 著者の人数 読者コメントの量 ブログの扱うのが ニュースや記事 ゲームや娯楽 画像や写真 役立つサイト 変なサイト 意見や体験など ブログの性格が 個人か企業か お気楽か真剣か 論争に踏み込むかどうか リベラルか保守か わかりやすいか難解か 子供に見せても大丈夫か、会社では見られない内容か ブログのトピックが エンターテインメント ビジネス 教育 家庭 青少年 ライフスタイル ニュース レクリエーション リファレンス テクノロジー といった

  • ブラウザ幅に応じて変わるレイアウト | 秋元@サイボウズラボ・プログラマー・ブログ

    via clagnut ブラウザの幅が狭いと2段、広いと3段になるようなページレイアウトをいくつか紹介している記事。 見てもらうのが一番早い。以下のページを開いて、ブラウザの幅を狭くしたり広くしたりすると、縦列の数が変化する。 UX MAGAZINE Redesign Notes 1: Width-based layout 著者自身のサンプルは、幅によってはあまり美しくならないが、何段にも可変にできる。 画面の大きな人でも小さな人でも、それなりのページが返せるというのはいいかもしれない。もっとも、逆に表示サイズがどうであれ同じレイアウトになることを望む人もいるだろうが。 日頃、だいたいブラウザの幅なんて一定で使ってるので、こういうレイアウトのサイトがかなり普及してたとしても気づいてないわけだが。こうやってブログで特集されてはじめて気づいた。僕は横にスクロールさせるよりはこっちの切り替えのほ

  • クールな英語の名前生成サービス Dislexicon | 秋元@サイボウズラボ・プログラマー・ブログ

    [更新 2018-07-30] 紹介していたサイトが https 化されていたのでリンクを変更しました。また、競合サービスやAndroidアプリの情報などを追加して新記事を起こしました。 Dislexicon: The English Language Extender は、単語を渡すと、その単語を含んだ(上で、英語的にそれっぽい)名前を考えてくれるサービスです。 “rss” などと入力して 25 個ぐらい生成させてみると、”rss” を含むいろんな造語が意味とともに表示される。 新しいサービスを始めたり、会社作ったりする人は、名前の検討ですごく悩むだろうと思うが、こういったサービスを使うと、思いもよらないよい名前にあたるかもしれない。 人間の創造性を、機械が力技で支援する、というのがなんかいい感じ、と思った。 # “baka” とか入力してもそれっぽい出力がきた。それはそれでよし。 この

    yass
    yass 2005/08/29
  • 1