Twitter
RSS
Facebook

Act as Professional

Ruby Enterprise EditionによってRedmineのメモリ使用量を42%節約


投稿日:2011年1月9日(この記事を読むのに必要な時間: 約 9分14秒

昨日インストールしたRedmineですが、格安VPSで動かすにはちとメモリを使いすぎる。

Ruby Enterprise Editionでpassengerを動かして、45%ものメモリを節約することに成功した。

その一部始終を語ろう。

続きを読む «Ruby Enterprise EditionによってRedmineのメモリ使用量を42%節約»

Gitのリポジトリを柔軟に管理する gitosis


投稿日:2011年1月7日(この記事を読むのに必要な時間: 約 5分24秒

GitHubの大普及で、もうプログラマーさんはみんなgitで開発しているかと思います。

でも、大人数でリポジトリを扱ったり、いくつものプロジェクトを扱うと、アクセス管理が大変です。

gitosis

アクセス管理を柔軟におこない、リポジトリの追加も簡単なgitosisを使いましょう。

続きを読む «Gitのリポジトリを柔軟に管理する gitosis»

mod_pagespeedでWEBの表示をビックリするほど高速化


投稿日:2010年12月27日(この記事を読むのに必要な時間: 約 8分36秒

Googleが公開しているApacheモジュールであるmod_pagespeedをさくらインターネットのVPSに導入して、このWordPressでつくられているこのBlogを高速化してみます。

mod_pagespeedとは?

公式サイト:http://code.google.com/p/modpagespeed/

配信されているコンテンツを高速通信、高速レンダリングできる形に変換してブラウザにコンテンツを返すApacheモジュールです。

つまり、あなた自身がサイトのコンテンツを最適化することなく、mod_pagespeedが全部自動でやってくれる、お手軽チューニングです。

これを見れば、どれだけ早くなるのかは想像がつくでしょう。

一例として以下のようなことをしてくれます。

  • HTMLのコメントなどコンテンツに意味のないデータを削除
  • ブラウザキャッシュしやすい形に最適化
  • 複数ファイルのCSSを一つにまとめる

などなど、機能は満載です。詳しくは公式サイトをご覧ください。

実際どうなの?

導入前 導入後

スコアが上がっています。

インストール方法

Ubuntu 10.4 64bit環境での手順です。

自分の環境に合わせたファイルをこちらからダウンロードしてください。

http://code.google.com/speed/page-speed/download.html

$ wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb
$ sudo dpkg -i ./mod-pagespeed-beta_current_amd64.deb
$ sudo /etc/init.d/apache2 restart

基本的には以上で終了です。

詳細な設定

細かいレベルでの設定をしたい人や導入したことにより問題が発生して人は設定を変えましょう。

設定ファイル

/etc/apache2/mods-enabled/pagespeed.conf

ModPagespeedRewriteLevel CoreFilters

特に設定をしなくてもCoreFiltersが設定されています。(*1)

Filterのドキュメントを見る限り、以下がCoreFilterに含まれているようです。

add_head
combine_css
extend_cache
inline_css
inline_javascript
insert_img_dimensions
rewrite_images

詳しいドキュメントはこちら

実際の設定

いろいろと試行錯誤した結果CoreFiltersがドキュメントに記載されている内容と違うのではないか。という結果が出たりしたので、明示的にFilterを全部設定することにした。

Filterの詳しいドキュメントはこちら

実際の例などを記載したコンテンツはこちらが参考になる。

    # ModPagespeedRewriteLevel CoreFilters                                                                                                                                                     

    # Add
    ModPagespeedEnableFilters combine_heads,combine_css
    ModPagespeedEnableFilters move_css_to_head
    ModPagespeedEnableFilters remove_comments
    ModPagespeedEnableFilters collapse_whitespace,elide_attributes
    ModPagespeedEnableFilters rewrite_javascript,rewrite_css,rewrite_images
    # ModPagespeedEnableFilters inline_css,inline_javascript
    ModPagespeedEnableFilters extend_cache
    ModPagespeedDisallow */wp-admin/*

幸い、JavaScriptの動作などに不具合が出なかった。

だが、WordPressの管理画面側のJavaScriptがダメっだので、最後の行で無効にしている。

inline_cssやinline_javascriptはpagespeedの評価の結果が悪くなったのでコメントアウトした。

環境によって、Filterは細かく有効と無効を設定した方が良いでしょう。

逆に遅くなるケースというのはあるはずです。

JavaScriptの動作に不具合が出た人は、以下のようにrewrite_javascriptを無効にしてみて。

ModPagespeedDisableFilters rewrite_javascript

apacheを再起動して設定を有効化する。

$ /etc/init.d/apache2 restart

一通り、動作確認をして終了。

Show Slowなどを利用して、モジュールの組み込み前と後を比較するとおもしろい。

mod_pagespeed_statistics

導入したサーバでmod_pagespeed_statisticsへの閲覧が初期設定では許可されている。

$ curl http://localhost/mod_pagespeed_statistics
resource_fetches_cached: 32
resource_fetch_construct_successes: 0
resource_fetch_construct_failures: 0
total_page_load_ms: 0
page_load_count: 0
cache_extensions: 42
not_cacheable: 0
css_file_count_reduction: 0
css_filter_files_minified: 34
css_filter_minified_bytes_saved: 30984
css_filter_parse_failures: 33
css_elements: 0
image_inline: 190
image_rewrite_saved_bytes: 440452
image_rewrites: 19
image_ongoing_rewrites: 0
javascript_blocks_minified: 170
javascript_bytes_saved: 208633
javascript_minification_failures: 1
javascript_total_blocks: 185
resource_url_domain_rejections: 652
url_trims: 0
url_trim_saved_bytes: 0
resource_404_count: 0
slurp_404_count: 0
serf_fetch_request_count: 77
serf_fetch_bytes_count: 1922757
serf_fetch_time_duration_ms: 4192
serf_fetch_cancel_count: 0
serf_fetch_outstanding_count: 0
serf_fetch_timeout_count: 0

このようにmod_pagespeedの統計情報を見ることができる。(*2)

設定が効果的なのか一つの指標にすると良い。

*1: コメントアウトされていてもCoreFiltersは有効

*2: curlがインストールされてなければ、sudo apt-get install curlでインストールする

無料で外部からサーバ監視をする


投稿日:2010年10月10日(この記事を読むのに必要な時間: 約 1分0秒

Geoloqi Server Stats during the Hackathon

photo by aaronparecki

VPSとかサーバを外部監視してますか?

・apacheの設定ミスに気づかず、一部VirtualHostが外部から見えない

・クライアントの回線が悪いのかVPSの回線が通信障害なのかの切り分け

・ドメインの有効期限切れに気づかず失効

こんなことを防ぐためにも、外部監視はしておいたことに越したことはない。

無料で外部監視ができるサイトをいくつか調べてみた。

僕が選んだのはライブドアデータホテルパトロールだ。

AlertMeはSSHのポート指定を監視できないから論外。

というより、あまりGMOに良いイメージがない。

cman.jpに関してもいまいち信用におけなかったので、

独自の監視ツールで実運用をしているライブドアデータホテルパトロールを利用してVPSを監視することにした。

SNMPの値を取ってこれるのも良い。ライブドア++

これで、何かあれば携帯にメールが来るからすぐに対応できる。

gumiStudy#2 いってきた


投稿日:2010年9月15日(この記事を読むのに必要な時間: 約 0分55秒

gumiStudy#2にいってきました。@kazeburoさんのmemcachedに関するお話し。

まとめちゃうと、memcachedを知り尽くすにまとめてあるのだ!

オススメ起動オプションとか

$ ./memcached -c 32768 -u nobody -C -m 16GB -p 11211 -U 0

  • コネクションいっぱい
  • root以外の権限で稼働させる
  • CASは無効(CAS予約領域を確保しなくなる)
  • メモリサイズを指定(実際はコレより大きくなるから実メモリの80%推奨)
  • TCP使うんだったら指定する
  • UDP使わないならこんな感じで0にしとく

mixiの大規模障害とかあった後だから、今が熱いmemcachedでした。

@kazeburoさんが開発しているリソースモニタリングフレームワークであるcloudforcastのお話しがありました。詳しくはYAPC::2010でお話しするようです。yamlでさくさくっと設定できるようなので便利そうでした。

Membaseは遅い


投稿日:2010年8月18日(この記事を読むのに必要な時間: 約 0分6秒

Membaseは遅い。Redisをつかえ!

memcachedと入れ替えたら遅い遅い。

でも、今後に期待。

仮想サーバのHDD(LVM)領域増設


投稿日:2010年6月10日(この記事を読むのに必要な時間: 約 7分25秒

VMware ESXiの仮想サーバがHDD容量不足になったので増やす。

LVMで構築されているLinuxを前提としている。

(大抵の最近のLinuxはこれだから大丈夫でしょ)

[bash]

[root@localhost ~]# df 

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

                      39486856   2709764  34738924   8% /

/dev/sda1               101086     19284     76583  21% /boot

tmpfs                   255292         0    255292   0% /dev/shm

[root@localhost ~]# fdisk -l /dev/sda

Disk /dev/sda: 42.9 GB, 42949672960 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        5221    41833260   8e  Linux LVM

[/bash]

VMware ESXにて該当するHDDの容量を増やす。

スナップショットが有効だと増やせない。

増やしたい場合は、今までのスナップショットを全て破棄する必要がある。

[bash]

[root@localhost ~]# fdisk -l /dev/sda

Disk /dev/sda: 64.4 GB, 64424509440 bytes

255 heads, 63 sectors/track, 7832 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        5221    41833260   8e  Linux LVM

[/bash]

HDDの総容量が増えていることを確認。

[bash]

Command (m for help): p

Disk /dev/sda: 64.4 GB, 64424509440 bytes

255 heads, 63 sectors/track, 7832 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        5221    41833260   8e  Linux LVM

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 3

First cylinder (5222-7832, default 5222): 

Using default value 5222

Last cylinder or +size or +sizeM or +sizeK (5222-7832, default 7832): 

Using default value 7832

Command (m for help): p

Disk /dev/sda: 64.4 GB, 64424509440 bytes

255 heads, 63 sectors/track, 7832 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        5221    41833260   8e  Linux LVM

/dev/sda3            5222        7832    20972857+  83  Linux

Command (m for help): t

Partition number (1-4): 3

Hex code (type L to list codes): 8e

Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sda: 64.4 GB, 64424509440 bytes

255 heads, 63 sectors/track, 7832 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14        5221    41833260   8e  Linux LVM

/dev/sda3            5222        7832    20972857+  8e  Linux LVM

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table.

The new table will be used at the next reboot.

Syncing disks.

[/bash]

ココで再起動

[bash]

# pvcreate /dev/sda3

# vgextend VolGroup00 /dev/sda3

# lvextend -L +20G /dev/VolGroup00/LogVol00

# resize2fs -p /dev/VolGroup00/LogVol00

[root@localhost ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup00-LogVol00

                       58G  2.6G   52G   5% /

/dev/sda1              99M   19M   75M  21% /boot

tmpfs                 250M     0  250M   0% /dev/shm

[/bash]

以上で終了。

あらためて、自宅サーバをつくる


投稿日:2010年5月16日(この記事を読むのに必要な時間: 約 6分52秒

VMwareESXiを動かすためだけに勢いで買ったDELL PowerEdge T105にHDDを2個買ってきて、自宅サーバとして生かすことにする。

HDDのDiagnostic

パソコンの部品は購入したら不良がないかをチェックしないといけません。OSを入れてから不良セクタが見つかったりしたら、目も当てられません。正常に動作しなければメーカーに交換してもらう必要があるので、データを入れる前に必ずチェックします。

KNOPPIXをブートして、ターミナルを立ち上げて、

$ badblocks -c 512 -t random -fwvs  /dev/sda

$ badblocks -c 512 -t random -fwvs /dev/sdc

全てのテストが正常に終了すればOK。エラーが出たらメーカー交換。

Bigsectorへの対処

今回購入したWestern Degital WD20EARSというHDDは「Advanced Format Technology」が採用されている。簡単に言うと従来のHDDは1セクタが512バイトだったのを4096バイトで扱おうって技術。通称Bigsector

要するにファイルシステムの開始セクタを8の倍数に設定しておけばOKってことだけど、Ubuntu10.04LTSではパーティション境界を1 MiB (1048576 bytes)地点から開始するので、何も考えずにパーティションを新規作成すればOK

サーバOSの選定

Debianの文化に尊敬の意を表してUbuntuを使います。UbuntuのLTS版は10.04となっていて、サーバ版は2015年4月までサポートされる予定です。安定して稼働し続けさせるためには心強い。

まぁ、2015年になったらサーバを買い換えていると思うので、基本的にOSを入れたら再度そのHWにOSを入れることはほぼありません。

外部公開部分にはKVM上でCentOSを利用して外部公開しようと考えています。

OSインストール

普通にOSインストールです。OpenSSH Serverのみ選択して粛々と終了。

GRUB2が入らなかったので、とりあえずLILOをいれとく。

hiroki@t105:~$ df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/VG1-root  1.8T  854M  1.7T   1% /

none                  2.0G  176K  2.0G   1% /dev

none                  2.0G     0  2.0G   0% /dev/shm

none                  2.0G   36K  2.0G   1% /var/run

none                  2.0G     0  2.0G   0% /var/lock

none                  2.0G     0  2.0G   0% /lib/init/rw

none                  1.8T  854M  1.7T   1% /var/lib/ureadahead/debugfs

/dev/mapper/VG1-boot  237M   24M  201M  11% /boot

hiroki@t105:~$ sudo lvdisplay /dev/mapper/VG1

  • Logical volume —

LV Name                /dev/VG1/boot

VG Name                VG1

LV UUID                B1TXJ2-Z0Hn-l0NB-xtUg-Z53K-BrLq-sqyD3b

LV Write Access        read/write

LV Status              available

# open                 1

LV Size                244.00 MiB

Current LE             61

Segments               1

Allocation             inherit

Read ahead sectors     auto

  • currently set to     256

Block device           251:0

  • Logical volume —

LV Name                /dev/VG1/swap

VG Name                VG1

LV UUID                dviFr7-gbLh-si56-y2YK-Kpd3-6MnW-UJUlVk

LV Write Access        read/write

LV Status              available

# open                 1

LV Size                3.81 GiB

Current LE             976

Segments               1

Allocation             inherit

Read ahead sectors     auto

  • currently set to     256

Block device           251:1

  • Logical volume —

LV Name                /dev/VG1/root

VG Name                VG1

LV UUID                JCTRvJ-wMJR-RY7p-2D9t-K29e-RTGJ-Hv422v

LV Write Access        read/write

LV Status              available

# open                 1

LV Size                1.82 TiB

Current LE             475894

Segments               1

Allocation             inherit

Read ahead sectors     auto

  • currently set to     256

Block device           251:2

hiroki@t105:~$ cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdb1[1] sda1[0]

1953513408 blocks [2/2] [UU]

unused devices: <none>

hiroki@t105:~$ sudo /sbin/hdparm -ft /dev/mapper/VG1-root

/dev/mapper/VG1-root:

Timing buffered disk reads:  304 MB in  3.02 seconds = 100.68 MB/sec

hiroki@t105:~$ uname -a

Linux t105 2.6.32-21-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux

最初のHDDのMBRにしかブートローダーを書いていないので、後ほど次のHDDにも書くことにする。

OSの設定などは後日。

Debianでの自動起動管理


投稿日:2010年5月1日(この記事を読むのに必要な時間: 約 0分14秒

自宅のdebianサーバを整理していてのメモ

$ sudo update-rc.d -f vmware remove

$sudo update-rc.d -f vmware defaults

これで、debianの自動起動を設定できる。

Related Posts Plugin for WordPress, Blogger...