:::: MENU ::::
Browsing posts in: Linux

wrkのインストール

ベンチマークツールのwrkをインストールしました。

Macでは、brewパッケージで簡単に導入できます。

$ brew install wrk

Linuxでは、パッケージが用意されていないので、githubのリポジトリを利用してインストールします。

$ cd /tmp
$ git clone https://github.com/wg/wrk.git
$ cd wrk/
$ make
$ sudo cp wrk /usr/local/bin/.

使い方

$ wrk -t スレッド数 -c 接続数 <url>

Usage: wrk <options> <url>
  Options:
    -c, --connections <N>  Connections to keep open
    -d, --duration    <T>  Duration of test
    -t, --threads     <N>  Number of threads to use

    -s, --script      <S>  Load Lua script file
    -H, --header      <H>  Add header to request
        --latency          Print latency statistics
        --timeout     <T>  Socket/request timeout
    -v, --version          Print version details

  Numeric arguments may include a SI unit (1k, 1M, 1G)
  Time arguments may include a time unit (2s, 2m, 2h)

 


APCからZend OPcacheへ変更

Scientific Linux(sl6)で運営しているこちらのサイトで、APCをやめて、Zend OPcacheへ変更してみた。

現状の環境は、

Scientific Linux: 6.4
PHP: 5.4.19 (php-fpm)
nginx: 1.4.2
APC

Zend OPcache導入

redhat系のsl6,CentOS,Fedoraではパッケージが用意されていないようなので、githubからソースプログラムを引っ張って、コンパイル・ダウンロードする。

その前に、php-deveが必要なので、php-develをインストールしておく。

# yum install php-devel --enablerepo=remi

githubからインストールまでの作業

$ sudo yum install php-devel --enablerepo=remi

$ git clone https://github.com/zend-dev/ZendOptimizerPlus.git
$ cd ZendOptimizerPlus
$ phpize
$ ./configure --with-php-config=/usr/bin/php-config
$ make
$ make test
$ sudo make install

make installで、/usr/lib64/php/modules/opcache.soがインストールされるので、これをphp.iniで読み込む

php.iniに下記を追記

/usr/lib64/php/modules/opcache.so

APCが読み込まれているので、これを無効にする。

# cd  /etc/php.d/
# mv apc.ini apc.ini.bak

nginx再起動し、確認

# /sbin/service nginx restart
# php -v
PHP 5.4.19 (cli) (built: Aug 22 2013 08:03:53)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
  with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies

with Zend OPcacheが表示されればOK。


mosh-serverのプロセスをkillする方法

moshは便利に利用してますが、いろんな端末からログインした後などで放っておいたりすると、プロセスがdeatacheのまま生きてます。

Mosh: You have 2 detached Mosh sessions on this server, with PIDs:
mosh [3700]
mosh [31091]

screenのように、これらのセッションをreatache出来れば良いのですが、moshではセキュリティ上出来ないようです。

再度、deatacheした端末でreatacheするしかありませんが、もう、これらのセッションを利用しない場合には、一旦、全てのプロセスをkillした方がスッキリしますね。

で、全てのmosh-serverプロセスをkillするには、下記にて。

kill `pidof mosh-server`

ちなみに、moshで接続してkillすると、強制的にログアウトされます。当然ですけど 😛


Cronで走らせていたmysqlが警告を出していた

幾つか運用しているLinux上で、毎週、MySQLのバックアップを取るように設定しているのだが、いつの日からか下記の警告が出ていた。(原稿現在:sl6,mysql:5.1.69)

— Warning: Skipping the data of table mysql.event. Specify the –events option explicitly.

/etc/cron.weeklyにバックアップスクリプトを下記のように記述していた。

mysqldump --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
mysqldump --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
ql.$DATE

どうやら、events optionを指定しろと言うことらしいので、引数に–eventsを追加

mysqldump --events --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
mysqldump --events --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
ql.$DATE

これで、警告は出なくなった。

ちなみに、警告出てた時でも、バックアップ自体は取れてました。


advpngでのNo command specifiedエラー

png画像圧縮プログラムの一つにadvpngがありますが、以前だと、

$ advpng *.png

のコマンドで良かったはずだと記憶してますが、
最近では、下記のエラーとなります。

No command specified [at void process(int, char**):repng.cc:476]

この場合、引数に-zを加えてあげれば問題ないですね。

$ advpng -z *.png

場合によっては、optipngより圧縮されることもあるadvpngは、AdvanceCOMPのパッケージに含まれているので、CentOS系のLinuxでは、EPELからadvancecompをインストールする事によって利用が可能になります。

# yum install advancecomp --enablerepo=epel

 

参考URL

PNG画像のファイルサイズ最小化 — ディノオープンラボラトリ


さくらのVPS上でpulseaudioは不要だね

sl6を走らせているさくらのVPS上で/var/log/messageにpulseaudioがエラー吐きまくっていたので対処。

以前、VNCやらFirefoxを入れた際にGNOME関連で勝手に入ってしまったと推測。

エラーはこんな感じ↓

Aug 26 16:34:14 www pulseaudio[9085]: core-util.c: Failed to connect to sy
stem bus: Failed to connect to socket /var/run/dbus/system_bus_socket: そのよう
なファイルやディレクトリはありません

コンソールモードでサーバにしているので、全く必要ないので、削除。

# yum remove alsa-plugins-pulseaudio pulseaudio

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
alsa-plugins-pulseaudio x86_64 1.0.21-3.el6 @anaconda-ScientificLinux-201107140938.x86_64/6
93 k
pulseaudio x86_64 0.9.21-14.el6_3 @sl 1.9 M
Removing for dependencies:
pulseaudio-module-gconf x86_64 0.9.21-14.el6_3 @sl 19 k
pulseaudio-module-x11 x86_64 0.9.21-14.el6_3 @sl 46 k

Transaction Summary
================================================================================
Remove 4 Package(s)

 


LinuxでDropbox起動時に警告メッセージが出たので対処

Linux上にて、Dropboxを起動するときの症状です。

Dropboxのスクリプトを起動しようとすると、下記のエラー

Unable to monitor entire Dropbox folder hierarchy. Please run “echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches” and restart Dropbox to correct the problem.

親切なメッセージなので、おおせの通りに、

# echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches

で、Dropboxを起動すると直る。

でも、OS起動時に再びこの警告は出てしまうので、/etc/sysctl.confに下記を追記

fs.inotify.max_user_watches = 100000

これを反映させるには、

# sysctl -p

これで、OS起動時にも警告が出なくなる。
(今後のDropboxバージョンアップによっては、出る可能性もある)


nginxで停止・再起動が出来ないとき

nginxで運用中にて、nginxやphp,mysql周りでアップデート等があったりすると再起動させたい場合があります。

しかし、nginxを停止・再起動が出来ない場合も偶に起こります。

# service nginx stop
nginx: [emerg] bind() to 0.0.0.0:8002 failed (98: Address already in use)
…..

#service nginx restart
nginx: [emerg] bind() to 0.0.0.0:8002 failed (98: Address already in use)
…..

すでに、Apacheのhttpdが起動していると、このような症状が起きるので、Apacheが起動していれば、停止するだけで解決するでしょう。

# service httpd stop

もし、Apacheが起動していなければ、80番ポートを下記にて停止してあげればOKです。

# fuser -k 80/tcp

# service nginx restart

nginx を起動中: [ OK ]

 


Linuxディストリビューションのバージョン確認

ちょいと、仕事で必要だったのでLinuxディストリビューションのバージョン確認方法を調べてみた。

Redhat

Fedora
$ cat /etc/fedora-release 
Fedora release 19 (Schrödinger’s Cat)

Scientific Linux
$ cat /etc/redhat-release
Scientific Linux release 6.4 (Carbon)

CentOS
$ cat /etc/redhat-release
CentOS release 6.4 (Final)

RedHat/Enterprise
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.6 (Tikanga)

Turbolinux
$ cat /etc/turbolinux-release
Turbolinux Server 6.5 (Jupiter)

openSUSE
$ cat /etc/SuSE-release
openSUSE 12.3 (x86_64) VERSION = 12.3 CODENAME = Dartmouth

 

Debian

Debian
$ cat /etc/debian_version
7.1

Ubuntu
$ cat /etc/debian_version
squeeze/sid

 

参考までに、

Unix/BSD

Solaris
$ uname -sr
SunOS 5.10

FreeBSD
$ uname -sr
FreeBSD 9.1-RELEASE

Mac
$ uname -sr
Darwin 12.4.0

 

この他にも沢山のLinuxディストリビューションが存在しますが、下記の2つだけ覚えておけば良いようです。

  • Linux系では、/etc/issueを閲覧
  • Unix/BSD系では、uname -srを実行

treeを使わずにfindでディレクトリツリーリスト表示

Linuxでは、treeコマンドを利用すると、ディレクトリ内のツリー構造を表示させることが出来ますが、標準コマンドではないので、標準コマンドのFindを使って表示させてみます。

$ find . -type d | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
.
|-dir1
|-dir2
|-dir3

 

ちなみに、treeだとこんな感じ

$ tree -d
.
├── dir1
├── dir2
└── dir3

treeの方が、深い階層の場合にインデントしてくれたり、ファイルを表示してくれたりして便利ですが、treeがない環境の時にfindによる表示方法も覚えておくと良いかもしれません。

ちなみに、treeは、yumやapt-getで簡単にインストールできますね。


ページ:12345678...15