カテゴリの投稿: » 技術情報

MySQLで「Host ‘hogehoge.com’ is blocked because of many connection errors」が発生

Written in 2012年04月21日 by | コメントする( 0件 )

たとえばPHPなどでは以下のようなエラーメッセージが出力される。

Warning: mysql_connect() [function.mysql-connect]: Host 'hogehoge.com' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' in /home/hoge/public_html/somedir/somescript.php on line 50

■原因

MySQLがそのホスト(hogehoge.com)から多くの接続エラーを受けた場合に発生します。接続エラーの大量発生後、MySQLサーバは何か問題(クラッカーからの攻撃など)が発生したと判断し、このホストからの接続を拒否するようにします。

デフォルトでは、接続エラーが 10 回発生すると、mysqld はそのホストを拒否します。この数はMySQLのmax_connect_errors変数によって変更できます。

参照URL: http://dev.mysql.com/doc//refman/4.1/ja/blocked-host.html

 

■対処

①シェルで以下のコマンドを実行する

# mysqladmin flush-hosts

②以下のSQLを実行する

FLUSH HOSTS;

 

■事象発生の確認

上記エラーメッセージが出力されることが事象発生を知らせるものであるが、MySQLサーバ側でその状態を確認することはできないのか。ある程度はできる。

接続エラーが発生するとそれはホストキャッシュ(host cache)に記憶される。このホストキャッシュとは、MySQLがDNSからIP、ホスト名を正引き、逆引きした結果をキャッシュしておくもので、同時に、この接続エラーの状況を記憶しておくものでもあります。それでこのキャッシュを上記のコマンドでフラッシュしてやれば解決するのである。ホストが拒否された場合、これが唯一の解消方法です。

さて、このホストキャッシュを閲覧できるなら状況を把握できるのだが、閲覧するためのコマンドは存在しません。確認できるSQLコマンドを追加するパッチを開発した方もおられるようだが。

しかし、いくつか得られる情報はある。

①error log と general query log

–log-warningsオプションをつけてサーバを起動すると、error logに以下のようなエラーメッセージが記録される。

010301 14:38:23  Aborted connection 854 to db:
'users' user: 'josh'

また、general query logが有効にされていると、問題の原因の種類が書き込まれる。

②ステータス変数「Aborted_clients」「Aborted_connects」

以下のSQLを実行するとこのステータス変数を取得できる。

SHOW GLOBAL STATUS WHERE `Variable_name` IN ( 'Aborted_clients', 'Aborted_connects' );

ホスト拒否の根拠とされるのは、どちらのステータス変数なのか、あるいは両方なのかはわからないが、それぞれの変数の意味は以下の通りです。

Aborted_clients

クライアントが接続できたものの後で不適切に切断されたり終了されたりした場合、MySQLはこのステータス変数を増加させます。また、error logにAborted connectionメッセージが書き込まれます。このステータスになる原因は以下の通りです。

  • クライアントプログラムがmysql_close()をコールせずに終了した
  • クライアントが何のリクエストもしないままwait_timeoutまたはinteractive_timeoutの秒数を経過してスリープしている場合
  • クライアントプログラムがデータ転送中に突然に終了した場合

Aborted_connects

クライアントがコネクトすらできなかった場合にサーバはこのステータス変数を増加させます。コネクション試行の失敗は以下の理由で発生します。

  • クライアントがデータベースへの接続権限を持っていない
  • クライアントが正しくないパスワードを使用している
  • コネクションのパケットに正しい情報が含まれていない
  • コネクションのパケットの取得にconnect_timeout秒以上を要した

これらの種類の問題が起きている場合、誰かがサーバに侵入しようとしていることを意味しているかもしれません。これらのタイプの問題に関するメッセージは(有効にさていれば)genral query logに記録されます。

そのほかにもAborted_clientsやAborted_connectionsになる理由はあるが詳細は以下のURLを参照してください。

参照URL: http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html

64bitのLinuxサーバにPHPを./configureする際にlibjpeg, libpng, ldapなどがない!と怒られる

Written in 2011年05月20日 by | コメントする( 0件 )

64ビットのLinuxサーバにPHPをソースインストールで./configureする際に、予期せず以下のようなエラーに遭遇したことはないだろうか。

configure: error: libjpeg.(a|so) not found. php 5.2.17

configure: error: libpng.(a|so) not found. php 5.2.17

単にlibjpeg-devel, libpng-develがインストールされていないなら、

yum install libjpeg-devel

yum install libpng-devel

でインストールすればいい。しかし、これはもうやったのに、上記エラーが出る場合、32bit(i386)のライブラリがインストールされていない可能性がある。

# ls -la /usr/lib | grep libjpeg
lrwxrwxrwx   1 root root      17  5月 20 15:58 libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx   1 root root      17  5月 20 15:58 libjpeg.so.62 -> libjpeg.so.62.0.0
-rwxr-xr-x   1 root root  134268  1月  6  2007 libjpeg.so.62.0.0

のように、/usr/lib の中に、ライブラリが入っているか確認するといい。もしかしてなかったりしませんか? 次に64ビット用ライブラリも確認してみよう。

# ls -la /usr/lib64 | grep libjpeg
lrwxrwxrwx  1 root root      17  5月 20 15:17 libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx  1 root root      17  7月  2  2010 libjpeg.so.62 -> libjpeg.so.62.0.0
-rwxr-xr-x  1 root root  138936  1月  6  2007 libjpeg.so.62.0.0

こちらは有ったりしませんか?
なんだ、64bitのしかないなら、

./configure –with-libdir=lib64

のように指定すればいいではないか。でもやってみると、今度は、mysql_clientがないとか言われたりする。今度は32ビット版のライブラリしかないものが見つからなくなってしまう。。。困ったもんだ。

もし、yumでインストールしたlibjpegやlibpngのライブラリが64ビット版はあり、32ビット版がないという状況の場合、yumでi386のパッケージを除外する設定がされている可能性があります。普通、libjpeg, libpngは、yumインストールすると32ビット版、64ビット版の両方がインストールされるはずだからです。以下のように確認してみよう。

# cat /etc/yum.conf

設定の中に、

exclude=*.i386

のような記述があればコメントアウトする必要がある。これでyum install libjpeg-develで、32ビット版のライブラリもインストールされるはずだ。

/etc/yum.repos.d/

の中にあるファイルに関しても確認してみル必要があるかもしれない。

 

Apache2.2+PHP5.3+MySQL5.5環境でApacheが立ち上がらない

Written in 2011年03月23日 by | コメントする( 0件 )

最近、Apache2.2+PHP5.3+MySQL5.5の構築をしました。何度もしていたので甘く見てたら、Apache起動でOKと表示されるものの実際には立ち上がっておらず、ログにもエラーが出ていなかったので、とても困りました。

おそらくopensslの複数バージョンの混在が原因ではないかと思います。RPM版のopenssl0.9.8eが入っており、別途ソースインストールで、/usr/local/openssl にopenssl1.0.0cを入れていました。

MySQL5.5では、コンパイル時にCmakeを使うようになり、設定方法が以前と変わっており、opensslのインストールPREFIXを指定できずに(方法があるのかもしれませんが、、、)、デフォルトのディレクトリ/usr からライブラリを組み込むようで、RPM版のopenssl0.9.8eが組み込まれました。

一方、PHPではopensslのインストールディレクトリを指定できるので、/usr/local/openssl のopenssl1.0.0cを組み込もうとしたところ、MySQL5.5からクライアントライブラリを組み込む指定もしていたので、MySQL5.5のopenssl0.9.8eとPHP5.3のopenssl1.0.0cがコンフリクトして「セグメンテーション違反」となって、コンパイルできなかった。

なので、opensslは複数バージョンのDSOモジュールがあると競合するようだ。仕方なく、PHPには、/usrのパスを指定してopenssl0.9.8eを組み込んだ。

さて、Apache2.2には、opensslのパス指定ができるので、/usr/local/openssl のopenssl1.0.0cを組み込んでいました。このアパッチにlibphp5.soを読み込ませるわけだが、そうするとApache2.2のopenssl1.0.0cと、PHP5.3およびMySQL5.5に組み込まれたopenssl0.9.8eがコンフリクトするのではなかろうか。PHPコンパイル時のPHP x MySQLのコンフリクトのようにエラーが出ればいいが、Apache起動時にエラーも吐かずに立ち上がらないという状況はいかにも困った。

これらのopensslコンフリクトの仮説をもとに、Apache2.2もopenssl0.9.8eを組み込んでコンパイルし直し、PHP5.3も同様にコンパイルしなおしたところ、動きました。。。。

AmazonEC2を使い始めた

Written in 2011年03月16日 by | コメントする( 0件 )

AmazonEC2を使い始めました。この柔軟性たまりませんね。CentOS5.5 32bitの既存AMI(イメージ)を使って、インスタンスを作った。EBSにルートパーティションを作るイメージなのですが、10GBのサイズで勝手にできてしまい、これではルートパーティションにしては小さい。それで、以下の手順でルートパーティションのサイズを20GBに拡大した。

①一度このEBSのイメージを作成
②そのイメージで20GBのEBSを新たに作成
③起動済みのインスタンスをSTOP
④10GBのEBSをdetach
⑤新しい20GBのEBSをインスタンスにattach。デバイスは/dev/sda1。
⑥インスタンスを起動
⑤SSHでサーバに入る。この時点ではまだ/dev/sda1 は10GBである。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  2.3G  7.1G  25% /
/dev/sdb              147G  188M  140G   1% /mnt
none                  854M     0  854M   0% /dev/shm

⑥以下のコマンドを実行する。

# resize2fs /dev/sda1

resize2fs 1.39 (29-May-2006)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/sda1 to 5242880 (4k) blocks.
The filesystem on /dev/sda1 is now 5242880 blocks long.

⑦これでルートパーティションのサイズが広がる

# df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              20G  2.3G   17G  13% /
/dev/sdb              147G  188M  140G   1% /mnt
none                  854M     0  854M   0% /dev/shm

Android版Skypeを再インストールできない方へ

Written in 2011年01月31日 by | コメントする( 5件 )

Android版SkypeがAndroidマーケットについに公開されました。ただ、一度Skypeを入れた後、アンインストールすると、再インストールできなくなる。

インストールエラー
利用可能な容量が不足しています。

これはSkypeのアンインストーラの問題で、

/data/data/com.skype.raider

というディレクトリが消されずに残ってしまい、再インストール時にそれが原因でエラーとなるのである。

▼解決策

要するに上記ディレクトリを削除すればよいのだが、そのディレクトリはroot権限がないと削除することも、閲覧することもできない。それでまず①端末をroot化し、②ファイルマネージャアプリで該当ディレクトリを消す、という手順をとる。(ちなみに私の端末はGalaxy Tab です。)

ご注意!! この手順には端末のroot化が含まれます。root化すると、「端末が故障」、「メーカーサポートが受けれなくなる」、「情報を流出してしまう」などの危険性があります。root化がどういうものかを理解された方が、あくまで自己責任で行ってください。当方は一切の責任を負いません。

① アプリ「z2root」をインストール
以下のサイトから、z2rootをダウンロードして、お持ちのAndroid端末にインストールします。

http://www.filefront.com/17562655/z4root.1.3.0.apk/

お持ちのAndroid端末のブラウザでこのページを開き、ダウンロードをすればよい。「マイ ファイル」アプリで、/download/ ディレクトリを覗くと、中ににz4root.1.3.0.apk というファイルが保存されているので、それを実行するとインストールされる。

② ファイルマネージャーアプリ 「Root Explorer」をインストール
Androidマーケットから「Root Explorer」をインストールする。このアプリでマイドキュメントより上の階層のファイルを扱うことができる。

③ root化する準備として、USBデバッグを有効にする
z2rootでroot化するにはUSBデバッグを有効にする必要がある。以下の手順で設定する。

「設定」アプリ => 「アプリケーション」 => 「開発」 => 「USBデバッグ」にチェックを入れる

④ z2rootを起動して端末をroot化する
z2rootを起動すると、「Temporary Root」(次に再起動するまで一時的にroot化する)、「Permanent Root」(恒久的にroot化する)、などのメニューがあるので、「Temporary Root」を実行する。(root化した状態では、「Un-root」(root化を解除する)というメニューもあるので、これで後でroot化を解除することができる。)

Running exploit in order to obtain root access…
Aquiring root shell…
Please wait while root operations complete…
Temporary root applied! You ar now rooted until your next reboot.

とメッセージが遷移するので、最後のメッセージがでたら、戻るボタンで、z4rootアプリを抜ける。

⑤ 「Root Explorer」を起動して該当ディレクトリを削除する
「Root Explorer」を起動する。すると、このアプリにroot権限を与えてよいかという警告がでるので、許可する。これで、 このアプリでroot権限でのみ閲覧・編集できるディレクトリやファイルを扱えるようになった。
目的のディレクトリ 「/data/data/com.skype.raider」を削除すれば、skypeを再インストールできるようになる。

⑥この情報が役に立ったら、以下のバナーリンクをクリックしてもらえると嬉しいな。


在宅、SOHO、求人



Galaxy Tab を導入した

Written in 2011年01月07日 by | コメントする( 0件 )

image

Galaxy Tab を導入した。WordPress のアプリもあったので、それで投稿してみる。うまくできればブログ更新もこまめにできるかもしれない。

カーナビがわりにもしたくてシガーライターから充電するサムスン純正のオプション。あとは車に設置する台を買った。これで外出準備OK。

ベルトにつけて持ち運ぶケースがほとんどない。ひとつだけ見つけたので注文した。
バンナイズ製品
注文が殺到しているらしく、届くのに20日もかかるそうな。私もケースつくって売ろうかな。

22インチCRTを3つにした

Written in 2010年11月14日 by | コメントする( 0件 )

CRT3台使用

CRT3台使用

22インチCRTを3台にしてみた。ワークステーションでは、Quadro FX3500を使って、22インチCRTを2台で使っていたが、以前社員が使っていた同じCRTがもう2台あるので、3台、4台構成にしたくなってきた。本当はおっきな液晶モニタを複数台構成にしたいが、お金がかかるし、CRTが勿体ないので活用することにした。

4台のモニタをつなげられるグラフィックカードもあるが、買うと6万円くらいするので勿体ない。そこで、グラボ2枚挿しにすることにしたのです。同じQuadroでそろえればドライバが同じなので、うまくいくだろうというグラボに詳しい友人(写真の男)のアドバイスの元、NVIDIA Quadro NVS 290を購入した。ヤフオクで中古が手にはいればよかったが、なかったのでツクモのネットショップで新品購入。19,710円なり。

私のワークステーション、DELL PRECISION 690では、PCI Express x16 が1スロットしかなく、あとは、x4が3スロットなので、チョイスとしては、PCI Express x1のグラボしかないのでした。なので、NVS290。

風邪をひいていたにもかかわらず、写真の友人を呼び出して、あまりおいしくないワタリガニの缶詰とホタテの缶詰を使ったクリームソースのフジッリを食べて、いざチャレンジ。ドライバの新規インストールもなく、すんなり3画面が表示と相成りました。幅1920 × 高さ1440 × 3台 = 幅5760 × 高さ1440 になった。

ただ、違うグラボの2枚挿しならではの現象があった。写真の右側2つのモニタはFX3500からの出力、左の1台はNVS290の出力なのだが、FX3500とNVS290の性能の違いがあるため、NVS290出力のモニタで、反応の遅延があった。画面が並んでるので、それを体感できて楽しかった。左モニタと中央モニタにまたがるようにWEBブラウザを表示させ、WEBページをスクロールさせると、左モニタの部分だけ、遅れてスクロールする。動画とってみた。(懐かしいツインビーのYouTube動画を再生しながらテスト。)

ウィンドウのドラッグの場合は遅延はなく、WEBページのスクロールで遅延が観察された。でも、3画面にまたがるまでブラウザウィンドウを大きくすると、さすがに負荷が高いらしく、かなり重く、ウィンドウのドラッグでも左モニタの遅延が表れた。まぁ、実務ではウィンドウを複数モニタにまたがらせて使用することはないと思うので、問題ではないだろう。

これで仕事の効率が上がることを期待したい。でも、CRTに囲まれてると、電子ビームを集中照射されているようで体に悪そう。。。 そんなことも気にせずに、近いうちデスクのスペースに都合をつけて、4モニタにしてみたい。

rpmファイルはここで取得できますね

Written in 2010年07月10日 by | コメントする( 0件 )

各種OSのパッケージ等はここで取得できますね。

ftp://ftp.riken.jp/

CentOSなら、Linux => centos と進めばいい。

64bitサーバのCentOS5.3にyumをインストールする

Written in 2010年07月10日 by | コメントする( 0件 )

お名前.comのVPS(64ビット、CentOS5.3)にyumが入っていなかったのでインストールする。
http://www.onamae-server.com/vps/

wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/m2crypto-0.16-6.el5.6.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm

rpm -ivh python-elementtree-1.2.6-5.x86_64.rpm
rpm -ivh python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -ivh python-sqlite-1.1.7-1.2.1.x86_64.rpm
rpm -ivh m2crypto-0.16-6.el5.6.x86_64.rpm
rpm -ivh python-urlgrabber-3.1.0-5.el5.noarch.rpm

wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rp
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.x86_64.rpm
wget ftp://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm

rpm -ivh yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm \
yum-metadata-parser-1.1.2-3.el5.centos.x86_64 \
yum-3.2.22-26.el5.centos.noarch.rpm

でも、FAQをよくみたら、コントロールパネルで自動アップデートをOFFにするとyumがインストールされるようでした。。。

http://www.onamae-server.com/support/faq/vps/common/common_43.php

初期セットアップ時は、yumはインストールされていません。
yumはコントロールパネルにてアップデート方法を”アップデートなし”に変更するとインストールされます

http://www.onamae-server.com/vps/

NASを導入しました

Written in 2010年07月02日 by | コメントする( 0件 )

NAS QNAP TS-459Pro

NAS QNAP TS-459Pro

QNAPのNAS、TS-459Proを導入した。国内のNASに比べて格段に機能が高い。しかもLinuxベースなのでSSHで入れちゃったりする。SMB、NFS、FTP、WebDAVなどで、Windows、Linux、MACから使用できる。ApacheでWEBサーバを動かすこともできるけど使っていない。

魅力なのは、QNAPにeSATAやUSB接続で外部HDDにつないで二次バックアップを簡単に取れること。QNAP自体SATAのHDD4台でRAID6をとっているのだが、時々バックアップしておくとよいと思う。なので二次バックアップを手軽に行えるのは魅力です。HDDは壊れること前提の消耗品なので、RAID6でホットスワップできるのが本当に魅力。

ギガビットLANでワークステーションとつないで、データはほぼすべてQNAPにおいて、直接編集している。これでOSをクリーンインストールしたり、入れ替えたりするのが楽になるし、別マシンから仕事の続きができる。ネットに公開すれば外からでも作業ができるが、セキュリティ上そこまではしていない。踏み台サーバ経由でアクセスできるようにはした。

Outlookを使用しているが、データファイルはやはりNASにはおかない方がいい。接続が切れてデータファイルが壊れたり、Outlookがハングアップしたりするので。これは定期的にバックアップするのがいいだろう。Outlookのプラグインでデータファイルのバックアップを簡単にできるものがあるので、それをつかうといい。とはいえ、Outlook2010ではまだそのプラグインがない。

NASと同時にワークステーションも買った。DELLのPRECISION690だ。XEONのクアッドコアCPUx2、メモリ4GB、64ビットのWindows7を入れた。HDDはSAS(15000回転)を2台でをRAID0で組んだ。スピード重視、、、と言っても、SAS自体十分に早くて、RAID0の効果がよくわからない。。。データをNASに入れているので、RAID0で行けるのです。