トップ «前の日記(2010年09月05日) 最新 次の日記(2010年09月24日)» 編集

Masa's blog

検索キーワード:

2010年09月20日 kernel: nfs: server xxxxxxxx not responding, still trying [長年日記]

_ kernel: nfs: server xxxxxxxx not responding, still trying

サーバー側(linux01)がSlackware-8.0、クライアント側(lib190)がSlackware-12.1な環境で以下のようにnfsマウントを行ったときに、異常にアクセスの遅いことに気付いた。

mount -t nfs lib190:/ /mnt

サーバー側(linux01)の/var/log/messagesには以下のようなメッセージが、1分間に4、5回程度繰り返されていた。

Sep 19 12:59:03 linux01 kernel: nfs: server lib190 not responding, still trying
Sep 19 12:59:03 linux01 kernel: nfs: server lib190 OK

結局、対象療法ではあるけれども

mount -t nfs -o nfsvers=2 lib190:/ /mnt

として、nfsプロトコルのversion2を利用することを明示的に指定すると現象が治まった。

古いカーネル(2.4.x?)、古いユーティリティ(mount-2.11b)だとnfsプロトコルのversion3の実装に不完全なところが有るのかも知れないと想像。

_ /usr/lib/ruby/gems/1.8/gems/dbi-0.4.3/lib/dbi/utils/date.rb:57: undefined method `deprecate' for DBI::Date:Class (NoMethodError)

とある環境で、ruby+dbiなスクリプトで以下のようなエラーが出るようになった。

m-ito@c7x0 /home/m-ito/tmp> ./test3.rb
/usr/lib/ruby/gems/1.8/gems/dbi-0.4.3/lib/dbi/utils/date.rb:57: undefined method `deprecate' for DBI::Date:Class (NoMethodError)
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.3/lib/dbi/utils.rb:56
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /usr/lib/ruby/gems/1.8/gems/dbi-0.4.3/lib/dbi.rb:50
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
        from ./test3.rb:4

deprecateというメソッドがみつからないらしい。

m-ito@c7x0 /home/m-ito/tmp> gem1.8 list

*** LOCAL GEMS ***

dbd-sqlite3 (1.2.5)
dbi (0.4.3)
deprecated (3.0.0, 2.0.1)
sqlite3-ruby (1.2.5)

deprecatedがいつのまにか2.0.1から3.0.0にバージョンアップされている。これが怪しいかもしれない。ということで

m-ito@c7x0 /home/m-ito/tmp> su -
パスワード:
root@c7x0:~# gem1.8 uninstall deprecated

Select gem to uninstall:
 1. deprecated-2.0.1
 2. deprecated-3.0.0
 3. All versions
> 2
Successfully uninstalled deprecated-3.0.0

で、無事復旧。いろいろapt-getした結果、バージョンの不整合な状態になっていたよう。

_ rubygems

知ってる人にはあたりまえなのだろうが、gemを使ってdbiをインストールした場合は

require 'rubygems'
require 'dbi'

というふうにrubygemsを一緒に呼び出さないといけない。

という事にさっき気がついた。