samba共有へのアクセスが遅い!? (sambaのsocket optionsの設定について)
sambaサーバを作ったのはよかったのだけれど、
複数人数で一度にアクセスしたりすると
急にアクセスのスピードが遅くなったり、
sambaサーバがロックしたり、
そんなことは起こっていませんか?
(ご注意)
このページをご利用になった結果の影響については、
一切責任を負いませんので、あらかじめご了承願います。
- sambaサーバへのアクセスが思わしくない場合、
特に、複数人数で一度にアクセスすると遅いとか、
反応がわるくなってあげくの果てには
サーバごとハングアップしてしまったり、
そんな現象で困ったことはありませんか?
- samba(smb.conf)のマニュアルで、socket optionsの項目には
こんなことが書かれています。
ローカルなネットワークを使用している場合は、次のようなオプションになります。
socket options = IPTOS_LOWDELAY
ほとんど空いているような、ローカルなネットワークの場合は、次のようなオプションになります。
socket options = IPTOS_LOWDELAY TCP_NODELAY
ただし、この内容だけを鵜呑みにしてはいけないようです。
- sambaに付属しているspeed.txtを読むと、こんなことが書かれています。
正しい「socket options」を設定することは、パフォーマンスに
これまでと大きな違いを得ることができます。ただし、間違った設定をすると
それと同じだけの悪い結果を得ることになるでしょう。
正しい設定は、使用しているネットワークに大きく依存することになります。
socketのオプションであるTCP_NODELAYは、多くのネットワークにとって
唯一大きな違いを生み出すでしょう。多くの人は、「socket options = TCP_NODELAY」
を追加することで、sambaドライブからの読み出しのパフォーマンスを
倍増させているとリポートしています。これについてもっとも適切な理由は、
tcpのACKを返すためのMicrosoftのTCP/IPのスタックが遅いといったことが考えられます。
- さて、smb.confのsocket optionsですが、
規定値は、TCP_NODELAYのみとなっています(確認したのはsamba 2.2です)。
結局のところは、smb.confのマニュアルに記載されている内容にかかわらず、
デフォルト値のままさわらないのがもっとも無難な方法なのではないかと考えます。
IPTOS_LOWDELAYについては、Linuxなどでは設定しないほうが
性能がよいなどの記事もありました。
環境によって大きく異なると思いますが、
socket options = TCP_NODELAY
のみ設定するのが効果があると思っています。
shacho@critical.ne.jp
Last modified: Wed Nov 26 00:40:00 JST 2003