Linuxの最近のブログ記事

ServersMan@VPSで借りているサーバが2つあって、そのうちの1つがBlueOnyxで稼働しているので、Disk Quotaが設定されていて、今日いきなりQuota Exceedと相成りました。

大学いたときにホームディレクトリにきつきつのDisk Quotaがかけられていたのでそれ以降自分の立てるサーバにはDisk Quota付けたことがなかったため、どうやって解除するんだからよくわからん状態でした。

で、いろいろ考えた結果、自分が所有しているファイルだからDisk Quoataによる使用量の集計に入るんでね? と考え、rootで入って、

# chown root:site1 huge-data.tbz

などと打つことによって、実際Disk Quotaにおけるディスク使用量を減らすことに成功しました。おもしろいことに、ディスクをユーザのディレクトリを移動することなく、制限を回避できるので、ファイルが行方不明にならずに済むのが利点です。

しかし、これは普通に問題の先送りなのではないか。そんなファイルはさっさとバックアップするなり消すなりするべきなんだろうけどなあ……

今日はServersMan@VPSの仮想サーバがすこぶる重かった。LoadAverageを見たら15とか出よる。15CPUとかじゃないので当然異常なわけですけれども、同じ物理サーバに収容されていると思われる別の仮想サーバでも、LoadAverageが平均2~3。こっちは閑古鳥サーバなので、httpもそんな忙しいわけではなかったのにもうCPUを使いきっているっていうのはおかしいのです。

LoadAverage15を叩きだしたサーバはDTPWiki.jpやら、HWNDBasedPanelView.comとかを担当しているサーバなのですけれども、httpがまともに動かないので、httpdを停止させてみたら、LoadAverageが3~5に収まっている。そして、大量にディスクに書き込む系スクリプトがいつまでたってもメモリに残っている。これは、異常だ!

更に、コマンドラインでTABキーを押してコマンドの入力保管をすると、だんまりになる。どうやら、ストレージとのI/Oが入ると途端に時間がかかるような状態になっている模様。そういう意味では、httpdなんか、コンテンツをサーブするためにストレージから読み込むと同時に、ログを書き込むためストレージに書き込むわけで、結構アクセスが多いものですから、こんなに負荷が上がっていたのも納得です。

「原因は我にはなく、仮想サーバのストレージI/Oがおかしくなっているからである。」

原因がわかってしまっても、これは手が出ません。ServersMan@VPSのほうで何とかする問題である。ということで、こんなこともあろうかと用意していたAmazon EC2のTokyoリージョンのAmazon Linux AMIサーバに接続します。

今日やらかしてしまったのですが、とある診断サービスを運営していて、ファイルをアップロードする必要があり、アップロードの進捗をブラウザに伝える必要があったものでアップロードファイルのテンポラリディレクトリを/tmpから別のディレクトリに変更している状況で、更にテンポラリディレクトリを消していない状況だったのですが、この度めでたくテンポラリディレクトリが31998個になり、アップロードに失敗するようになっていました。

ext3ファイルシステムは、そんなに古くはないファイルシステムなのに、1ディレクトリ内のディレクトリエントリが32000エントリ(内、.と..で2つ消費するので、意味のあるエントリは31998エントリ)になると、それ以上ファイルやディレクトリが作れなくなるのでした。

早くext4ファイルシステムが使いたーい!(テンポラリ消せよ)

(2013.3.6 13.38 変更)

このエントリのタイトルを、
旧)Mojolicious::LiteのWebSocketのタイムアウトは300秒
新)Mojolicious::LiteのWebSocketのタイムアウトは15秒

に直しました。

〜〜〜

2011年11月26日のイベントに合わせて、自発的にWebSocketを使ったサイトを作ろうと思っており、本番に合わせて、ハッシュタグを設定してテストを行っているのですが、流量が少ないせいで、WebSocket接続がタイムアウトになることが判明。これはあかん。

Mojolicious::Liteを使っている時は、

my $timeout = app->ua->websocket_timeout;

でタイムアウトの時間が得られ、300秒となっとる。

これを、

app->ua->websocket_timeout(30);

とかに設定してテストをするも、相変わらず300秒で切れる。

というわけで、どこでタイムアウトを設定するかがわからん状況です。また調べなおししないと......


(2013-03-06 13:28追記)

更新終了のブログに追記っていうのもなんですが、今の時点で使っているMojolicious 3.50あたりだと、デフォルトのタイムアウトが15秒になっていまして、これを変更するには、

Mojolicious::Lite で WebSocketのタイムアウトの時間を修正する - 僕の車輪の再発明 [kazuph.hateblo.jp]

にあるように、

my $clients = {};
websocket '/echo' => sub {
    my $self = shift;
 
    # デフォルトだとタイムアウトが15秒なのを300秒に修正
    Mojo::IOLoop->stream($self->tx->connection)->timeout(300);
     
   ...
 
}

でいけます。

Mojolicious 2を試すには、Perl 5.10でないといけないわけなのですが、手持ちのVPSだとPerl 5.8.8なので、Amazon EC2で適当なAMIを探してサーバを立てようかなあと思ったのですけれども、今見たら、Amazon Linux AMIというやつがあり、Amazon公式のディストリという位置づけっぽいので、入れてみました。

Amazon Linux AMI [aws.amazon.com]

んで、Perl 5.10が入っているので、じゃあってことでcpanmを入れてモジュールをどんどんインストールしようと思ったのですけれども、最小インストールのディストリビューションですので、makeやgccあたりがなく、最初の状態だとたいていビルドに失敗します。

ということで、

yum install perl-devel
yum install gcc
yum install make
yum install openssl-devel

をしておいた方がよいです。openssl-develは、Net::SSLeayをビルドするのに必要ですよ。

以前、Mojolicious-1.9.8がインストールできずに、1.9.7を入れたりしたのですが、いまWebSocketによるサイトを作っている途中で、OperaやSafariあたりのサポートが1.9.7あたりだとうまくされていないようだったので、最近はWebSocket関連のアップデートがされているのかなーとか思って最新バージョンを見ていたら、Mojolicious-2.15まで進んでいたのですけれども、入れてみるとどうなるのかなーとか思って、cpanmしてみたらエラりました。

エラーログによると:

Unpacking Mojolicious-2.15.tar.gz
Entering Mojolicious-2.15
Checking configure dependencies from META.yml
Configuring Mojolicious-2.15
Running Makefile.PL
Perl v5.10.1 required--this is only v5.8.8, stopped at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
-> N/A

ありゃりゃ明確にPerl 5.10.1が必要と書かれている。今稼働中のVPSはCentOS 5なので、Perl 5.8.8なわけですけれども、このPerlを全入れ替えするとこのサーバで稼働させている様々なサイトがどうなるかわからんので怖い。

つうわけで、EC2でCentOS5立ててPerlだけ5.10系列に上げるのか、5.10系列が最初から準備されているScientific Linux 6にするかーとか考え中です。SFにしちゃうと、業務で稼働させているLinuxサーバとバージョンはなれてしまうのがちょっと不安なんですよね。

.bashrcなどをいじった後、読み込み直すコマンドを良く忘れるので。

CentOS 5 入れた後、lsコマンドがカラーで表示されない場合、.bashrcに、aliasを設定するのが定石。

Filename: ~/.bashrc

# .bashrc
 
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
 
# User specific aliases and functions
alias "ls=ls --color=auto"

最後の行にaliasを書き込んだ後、すぐに反映させるには、

source ~/.bashrc

とする。

sourceっていうのは、指定したコマンドを実行するものなんですね。あと、sourceの代用記述は、「.」(ピリオド)であり、さっきの ~/.bashrc にも「. /etc/bashrc」と、しっかり書かれていましたね。すべてのユーザに同じ設定をするには、/etc/bashrc に書き込むとよい、ということがわかります。

3月3日付で。

Amazon Web Services(AWS)東京リージョンが開設、日本語の24時間サポートも [japanese.engadget.com]

EC2もS3もいつでも使えるように勉強と準備はしているのだけれども、円建てで使えるようになるとはいえ従量制ということもあって、会社で使うにはなかなか難しいですよね。とはいえ、東京にデータセンターができたということは、今までは海を横断してデータが送受信されていたわけで、遅延が少ない環境を使えることになったというのはありがたいことであります。

AWSの開発案件発生しないかな……

CentOS 5に無理やり入れた、livedoor EDGEのSMALL LIGHT

livedoor ラボ「EDGE」 開発日誌 : 画像サムネイル作成モジュール「SMALL LIGHT」 公開のお知らせ - livedoor Blog(ブログ) [blog.livedoor.jp]

ですが、モジュール組み込んで1時間するとhttpdが反応しなくなる。

うち20個ぐらいのサービスを1つのサーバでやっているから、さすがに止まると困るので、とりあえずはずしたよ。

livedoorではどういう環境で動かしていたんだろうねー。

紙色の地に、黒で書かれたイメージがあったとして、たとえば

34563_1360706655_2

を、刷り色が赤っつーことで着色する、たとえば、

34563_13607066552_2

みたいにしたいとき、ImageMagickのコマンドconvertで、

$ convert -negate -colorize 100,0,0 -negate in.jpg out.jpg

とやったらできるのだけれども、-negateを2回も使っているので何だか改善の余地があるなあ。

月別 アーカイブ

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.2.7

このアーカイブについて

このページには、過去に書かれたブログ記事のうちLinuxカテゴリに属しているものが含まれています。

前のカテゴリはInDesignです。

次のカテゴリはMacMiniです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。