launchdは、デーモン、アプリケーション、プロセス、スクリプトの起動・停止・管理を行う、オープンソースのサービス管理フレームワークである。AppleのDave Zarzyckiによって作られ、Mac OS X Tiger (Mac OS X v10.4) で導入された。Apache Licenseのもとで公開されている。 launchdデーモンは基本的に以下を置き換えるものである: init rc init.dスクリプト rc.dスクリプト SystemStarter (macOS) inetd xinetd atd crond watchdogd Appleはlaunchdを推進し、上記のすべてのサービスを廃止するとした。[1] これらのデーモンが扱っていたほとんどのプロセスが、Mac OS X v10.4でlaunchdに移行された。すべてのlaunch serviceを一つのプロ
◆ DSR(Direct Server Return)とは DSRとは、ワンアーム構成において、ロードバランサに着信したクライアントからのリクエストパケットを レスポンスはロードバランサを経由せずに、直接(Direct)にクライアントに返す方式のことです。DSRは F5社のBIG-IPではnPathルーティングと呼ばれる技術に該当します。トラフィックフローは下図の通りです。 行きのパケット : クライアント ⇒ ロードバランサ ⇒ リアルサーバ 戻りのパケット : リアルサーバ ⇒ クライアント リアルサーバからのトラフィックをロードバランサを経由せず、クライアント側に直接転送できることから 以下のメリットがあります。 ・ ロードバランサ側での処理が必要なくなりシステム全体としてのスループットが向上する ・ ロードバランサ側でクライアントの送信元アドレスを変換させる必要がなくなる 一方、D
RabbitMQを、チュートリアルに沿って勉強していこうという流れで。前回はインストールとHello Worldでしたが、今回はこちら。 RabbitMQ tutorial - Work Queues — RabbitMQ チュートリアルの最初(RabbitMQ tutorial - "Hello World!" — RabbitMQ)では、キューに対してメッセージを投げる役(Producer)と受ける役(Consumer)がひとりずつでしたが、今回はメッセージを受け取る役が2つとなります。 これで、複数のWorker(というかConsumer)がキューに入れられたタスクを受け取って、それぞれ作業を行う…ということができるというわけですね。まあ、チュートリアル自体はとても簡単なものですが。 準備 RabbitMQのサーバーと、アクセス可能できるユーザーは作成済みとします。 今回はJavaク
はじめに daemontools自体はけっこー古いものなので情報はいっぱいありますが、 starmanとMojoliciousを立ち上げる際に久しぶりに入れたのでついでにメモ。 今回自分はdaemontools経由でstarmanからmojoliciousアプリを起動し nginxでプロキシする的なメモを書いた際にdaemontoolsのところが長くなったので、 肉付けして切り出したスニペット記事にするための記事としてみました。 ※ 書いてたら思ってた以上に長くなった。。。 アジェンダ daemontoolsとは daemontoolsダウンロード&インストール svscanを起動 daemon監視するserviceを作ってsvstatで確認してみる svcコマンドを使って見る serviceの止め方 multilogを設定する 1. daemontoolsとは この辺はいつもどおり自分の
ここでは、qmailの作者であるD. J. Bernstein氏作のサービスの起動を行うツールのサービス起動方法について説明します。既にdaemontoolsのインストールが完了しているものとして説明しています。 daemontools経由で起動できるデーモン daemontoolsはすべてのデーモンが管理できるということではありません。 フォアグランドで動作するもののみで、apacheなど起動するとバックグラウンドに移行するデーモンについては管理する事ができません。 qmail,tcpserverといったD. J. Bernstein氏作したデーモンはフォアグランドで動作しますので、ここでは qmail(qmailで apop の実装) を例にとって説明します。 daemontoolsの起動 daemontoolsを常駐させるために/etc/inittabに以下の行を追加します。 SV:
マルチプロジェクトは個人的には大変なので余りやりたくないのだが、規模が大きくなると様々な理由で必要になってくる。Gradleにももちろんマルチプロジェクトをサポートする機能がある。今回はそれを紹介。 そもそもマルチプロジェクト化する理由って? プロジェクトによって色んな理由があると思うが、うちだと以下のような理由がメインかな。 ビルドのルールを標準化したい ビルド時のソースエンコードとかビルドターゲットのバージョンとかバラバラにならないように統一したい。 依存ライブラリのバージョン定義を集約したい 各プロジェクトで使っているOSSライブラリのバージョンがバラバラ...なんてことを避けたい。 ビルドスクリプトを簡略化したい 同じような処理を各プロジェクトで記述するのは無駄だし、メンテナンスも大変。どこかに共通化して定義して、各プロジェクトのビルドスクリプトはすっきりさせたい。 サブプロジェク
今回は RabbitMQ チュートリアルの "Work Queue" を大雑把に翻訳しました。 内容は、前回の RabbitMQ チュートリアルの "Hello World" の続きとなっています。 大体意味はあっているとは思いますが、原文と照らし合わしながらご確認ください! Work Queues前回 "Hello World" では、指定した Queue から Message を送受信するシンプルなプログラムを紹介しました。今回 "Work Queues" では、前回のサンプルコードを少し修正し RabbitMQ の Roundobin Dispatching・Message Acknowledgment・Message durability・Fair Dispatching 機能を紹介します。 サンプルコードは、Producer として動作する NewTask と Consumer
Webアプリケーション内で処理を直列に実行せずにJob Queueに回して非同期に実行することが多くなって来て久しいと思いますが、そのおすすめ構成と気をつけることについてつらつらと。 1) 既存のデータベースをキューとして使う構成例 1つ目はMySQLなどのデータベースをキューとして用いる例。既にアプリケーションで利用しているデータベースにキュー用のテーブルを作成して利用します。データベースを利用したキュー管理の仕組みとしてJonk、Qudo、TheSchwartzなどがPerlでは有名どころです。 依存するミドルウェアが増えないので最もシンプルな構成になると思います。 上記の図ではWorkerはアプリケーション内で実行することで冗長性を確保しますが、キューを格納するデータベースはSPOFになります。しかし、、データベースに障害があった場合キューだけでなくすべてのサービスが停止すると思われ
現在開発担当している AbemaTV で、昨年末にパナソニックさんのスマートテレビ VIERA 向けにアプリケーションをリリースしました。AbemaTV リモコンボタンで AbemaTV にアクセスできます。今回このアプリケーションの UI を開発するにあたって、新しいデザインワークフローを導入しました。 本記事では、 Story-Assured Design というデザインワークフローを、現在プロダクト開発で直面しているデザインの課題とともに紹介します。 Story-Assured Design とは? Story-Assured Design はその名前が示しているように、ユーザーストーリーを保証することを目的とした UI デザインのワークフローです。UI デザインを3つのステップに分けて行います。 ストーリーデザイン デザインの構造化 視覚情報デザイン 一番重要なユーザーストーリーの
cron で指定時間に実行するように設定したのに、なぜか期待する動作をしていない。 そんなこと、ありますよね。 そんな時は、偉大なる syslog 様に助けてもらいましょう。 1. rsyslog でcron用のログを吐くように設定する ・rsyslog の設定ファイル(/etc/rsyslog.conf)を開く。 sudo nano /etc/rsyslog.conf ・cron用のログの設定行がコメントアウトされているので # を消す。 cron.* /var/log/cron.log #一部抜粋しているだけなので、間違っても上記のみ残すとかはやめてください。 ・設定の変更後は再起動 sudo /etc/init.d/rsyslog restart 2. cron のログレベルを設定する ・cron の設定ファイル(/etc/default/cron)を開く。 sudo nano /e
MySQLのロック ロックとはトランザクションの並列度を上げる為の並列スケジューリング方法の一つ トランザクションをサポートしているデータベースにおいては、トランザクションの並列数を上げる事が性能アップの一つの方法。 他のトランザクションに更新して欲しくないデータだけにロックをかけて、ロックされたデータ以外を更新するトランザクションは並列で実行される。 Innodbは行ロック? Innodbは更新対象の行だけをロックする。と思っていると、意外な落とし穴にハマる。 その一つがギャップロック。 ギャップロックを実際に起こしてみる サンプルテーブル idとstrがあるだけのシンプルなテーブル。idがPKで1~5までは順番に、その後、10,20と飛んで行が入っている。 通常の行ロック トランザクション1 select for updateでid=2の行を明示的にロック トランザクション2 id=1
ロックがわからない。MySQL InnoDBの行レベルロックを読んだけど、イマイチわからない。というわけで、社内の勉強会で知ったことをまとめてみる。 FOR UPDATEかLOCK IN SHARE MODEによって、そのトランザクション中に走る別画面でのクエリの処理のタイミングが異なる。 FOR UPDATEによるロック まずは画面Aで接続が行われ、トランザクションが開始され、SELECT文が発行されたとする。 [画面A] BEGIN; // トランザクションA開始 SELECT * FROM users WHERE id = 1 FOR UPDATE; COMMIT; // トランザクションA終了 そしてトランザクションAの開始後〜終了前に画面B〜Dがクエリを発行したとする。 ちなみにトランザクションを開始しておかないとFOR UPDATEを書いても画面Aでのロックが始まらないので要注
なかったらINSERTしたいし、あるならロック取りたいやん? from ichirin2501 www.slideshare.net 出来事 @ichirin2501 とりあえず何も考えずこの前のロックの話をSlideshareにあげてくれ!!— 柴崎優季 (@shiba_yu36) 2015, 8月 22 はじめに これは先日の社内勉強会で発表したもので、MySQLで特定の問題を解決したいときのノウハウ話です。特定の問題とは、アプリを書いてると「データがなかったINSERTしたい、あるなら排他ロックしつつ取得したい」という要望があったりします。例えば、あるユーザーアクションで初期値もパラメーターで渡されるケースで、データがないならそのままINSERT、既にデータがあるなら取得して状態に依存して更新処理を行いたい場合などです。見かけのロジックは単純に見えますが、MySQLでこれを実現しよう
この記事はMySQL Casual Advent Calendar 2013 3日目の記事です。 はじめに 以前にSELECT ... FOR UPDATEとロックの挙動 - walf443's blogの記事にTwitterで少し言及したんですが、それの補足というか、InnoDBのロックの範囲について僕はこう理解していますよという話です。 MySQLといえば、InnoDBをネットワークサーバとして使うためのフレームワークであり、SQLはInnoDBのインデックスにアクセスするためのDSLといっても過言ではないでしょう。 InnoDBのロックとはつまるところインデックス行のロックなので、InnoDBのロックの範囲を理解するためにInnoDBのインデックスについて少し前置きしておきます(だいぶ端折ったけど長くなった…)。 クラスタインデックスとセカンダリインデックス すでにInnoDBのイン
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く