`

samba性能调优

阅读更多

http://steve.chinavfx.net/?p=42

 

不知道有多少公司的内部打印及文件服务器是用的Linux,我想肯定不会太多,因为Windows实现起来更方便,更快速,当然,Windows也 是更Danger。 因为Windows有太多不确定性的东西,Virus,木马,等等。

但Linux也不见得太安全,不过因为我对Linux非常熟了,而且在Windows下面不了解,所以公司的文件服务器和打印服务器都是在一台机器 上面实现的, 同时这台服务器还管理公司网络的DHCP和DNS服务。

年初的时候,因为binutils的新版本的一些Optimize,所以把服务器的Linux重新做了,也换成了selinux,不过Gentoo 下的selinux真是想让人死。。 x86下面没什么问题,amd64下面,如果你是用multilib的,那我不清楚,我只用amd64的ABI,没有multilib, 在这种情况下,Gentoo的selinux会有不少问题。根本不可能用enforce模式。

就这样用了近半年,网络性能一直很差,从服务器上Copy文件或者反过来,性能都很差, 看看Windows的Task Manager里面的Networking,LAN的使用率最多也只能在40%左右,这个也太低了点吧?想办法解决一下。

先google了一下,发现IPv4可以有一些调整. 主要是下面几个参数:

  • /proc/sys/net/core/rmem_default 定义默认的接收窗口大小;对于更大的 BDP 来说,这个大小也应该更大。
  • /proc/sys/net/core/rmem_max 定义接收窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大。
  • /proc/sys/net/core/wmem_default 定义默认的发送窗口大小;对于更大的 BDP 来说,这个大小也应该更大。
  • /proc/sys/net/core/wmem_max 定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大。
  • /proc/sys/net/ipv4/tcp_window_scaling  启用 RFC 1323 定义的 window scaling;要支持超过 64KB 的窗口,必须启用该值。
  • /proc/sys/net/ipv4/tcp_sack 启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这 个选项应该启用,但是这会增加对 CPU 的占用。
  • /proc/sys/net/ipv4/tcp_fack 启用转发应答(Forward Acknowledgment),这可以进行有选择应答(SACK)从而减少拥塞情况的发生;这个选项也应该启用。
  • /proc/sys/net/ipv4/tcp_timestamps 以一种比重发超时更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。
  • /proc/sys/net/ipv4/tcp_mem 确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)。第一个值是内存使用的下限。第二个值是内存压力模式开始对缓冲区使用应用压力的上限。第三个值是内存上限。在这个层次上可以将报文丢弃,从而减 少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)。
  • /proc/sys/net/ipv4/tcp_wmem 为自动调优定义每个 socket 使用的内存。第一个值是为 socket 的发送缓冲区分配的最少字节数。第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)。
  • /proc/sys/net/ipv4/tcp_rmem 与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值。
  • /proc/sys/net/ipv4/tcp_low_latency 允许 TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项应该禁用。
  • /proc/sys/net/ipv4/tcp_westwood 启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化;对于 WAN 通信来说应该启用这个选项。
  • /proc/sys/net/ipv4/tcp_bic 为快速长距离网络启用 Binary Increase Congestion;这样可以更好地利用以 GB 速度进行操作的链接;对于 WAN 通信应该启用这个选项。

(以上内容引自http://www.ibm.com/developerworks/cn/linux/l-hisock.html

看了上面的内容,我对自己的服务器调整了一下,加了下面几个参数到sysctl.conf里面

net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.ipv4.tcp_rmem = 8192 4194304 8388608
net.ipv4.tcp_wmem = 4096 2097152 8388608

再去试了一下Copy文件,速度果然有5%-8%的提高,那么,下面的问题,就是samba的性能了。去samba的网站看看它的howto, 里面提高几个问题,一个是samba如何log,这个会对性能有一定的影响,但不大,最多也就是百分之几的差别。仔细看了howto以后,我设了如下几个 参数:

# Some other performace tuning options
# disable links and symbol links
    follow symlinks = no
    wide links = no
# enable some read/write tuning
    use sendfile = yes
    read raw = yes
    write raw = yes
    aio read size = 16384
    aio write size = 16384
    write cache size = 262144
    max xmit = 65536
    large readwrite = yes
    getwd cache = yes
# disable locking, because only 2 share can be written.
    strict locking = no
    fake oplocks = yes
    oplocks = no

来说明一下,

  • follow symlinks ,对我来说不需要,Windows好象不支持这种符号连接,我也不需要在共享里有这个东西,所以关闭
  • wide links,同上,不需要
  • aio read/write size,是和异步读写有关的,设大一点比较好
  • oplocks和locking这两个决定samba是否对文件进行lock测试,如果一个用户以write方式打开了这个文件,那么其它用户就 不能再以write打开,这两个东西很费内存,也同样会降低samba的性能。 另外,我有很多个share,其中只有两个是所有人都可以写的,其它的都只有一个用户能写,对于后者,不需要打开这个,因为共享设计就是别人无法写。 那么就在global里面把这几个和lock有关的参数关掉,在那两个所有人可以写的share再打开。
  • 所有基它的参数,都是samba里面提到的performance tunning的参数我就不一个一个的说了,要了解它的可以去 http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/  看 看

好了,samba也调整了,再试一下copy文件。WOW~~ 网络占用率达到了80%,提高了一倍!! 当然,所有的有数值的参数,都是需要对应实际应用来调整的,我在这里只是简单的设了一下,性能就提高一倍多,相信仔细调整后网络占用率应该能达到与 Windows相当的水平,也就是80%~90%

分享到:
评论

相关推荐

    samba命令 控制Samba服务器

    samba为script文件,可启动,停止Samba服务器或回报目前的状态。 Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为...

    linux下Samba服务器安装

    linux下samba安装rpm包,其中包含: samba-2.2.7a-7.9.0.i386.rpm, samba-client-2.2.7a-7.9.0.i386.rpm, samba-common-2.2.7a-7.9.0.i386.rpm 全套三个安装包... 已经做好了镜像文件,直接加载即可。

    嵌入式环境搭建之samba

    本文主要介绍了samba存在的前因后果,已经对samba进行简要介绍;并介绍了samba在ubuntu下安装,samba服务器端配置以及如何在window7共享samba服务器。最后,总结了samba的使场景。

    samba共享服务器配置文件 samba共享多个文件夹

    samba共享服务器配置文件,简单实现samba服务器共享多个文件夹,下载替换/etc/samba/smb.conf文件即可

    Samba配置Samba配Samba配Samba配

    Samba配Samba配Samba配Samba配Samba配Samba配

    ubuntu搭建samba环境

    文档描述了如何在虚拟机环境下ubuntu搭建samba环境的过程。方便初学者快速搭建,按照文档的介绍,你就可以在你的ubuntu中搭建你的samba共享环境,实现windows与linux资源共享

    samba-3.0.4-0.5.1.i386.rpm

    (一) samba组件安装: (1)首先用“rpm –qa |grep samba”命令检验系统samba服务是否安装。 #rpm –qa |grep samba samba-common-3.0.0.15.i386.rpm samba-client-3.0.0-15.i386.rpm samba-3.0.0-15.i386.rpm...

    ubuntu samba的安装,samba连接不上

    ubuntu samba的安装,samba连接不上

    Samba 3 by example

    The definitive Samba-3 guidebook has been completely updated to reflect the latest Samba releases and migration techniques. This book's complete configuration files, step-by-step implementation ...

    samba离线安装和自动部署

    ubuntu下,解压后执行./install.sh即可完成安装,映射路径在/etc/samba/smb.conf中,默认的samba密码见install.sh脚本

    Ubuntu下samba的使用

    Ubuntu下samba的使用 1. 安装samba服务器 2. 共享Ubuntu下的文件夹 (1) 手动配置方法 1) 打开/etc/samba/smb.conf。注:打开之前最好先备份一下 2) 在末尾添加如下配置项,假设需共享/home/flyfish/7800文件夹 ...

    使用PAM同步Samba与系统用户密码

    ubuntu的samba可是使windows直接通过文件夹的形式访问ubuntu内的文件,方便快捷,并且通过使用PAM同步samba与系统用户密码后,用户可以直接使用ubuntu的账号访问samba,从而减少管理samba单独的账号密码。

    samba_rpm完整服务器安装包下载

    samba所需全套rpm安装包下载地址,兼容所有版本内核 samba安装rpm包,包含: samba-2.2.7a-7.9.0.i386.rpm, samba-client-2.2.7a-7.9.0.i386.rpm, samba-common-2.2.7a-7.9.0.i386.rpm 全套三个安装包... 已经...

    Samba-rpm.rar

    CentOS7.9系统Samba安装包RPM文件

    samba服务器的安装

    samba服务器的安装,在红帽子上安装步骤非常明细

    操作系统安全:samba匿名访问配置(实验二).docx

    实验二:Samba匿名访问配置 一、实验目的 掌握Samba匿名访问控制配置 掌握访问Samba服务器的共享文件 二、实验内容与步骤 1、 Samba匿名访问控制配置 公共匿名类共享目录的配置(即匿名账户访问共享目录或文件) # ...

    LINUX-samba设置 LINUX-samba设置

    LINUX-samba设置 LINUX-samba设置

    操作系统安全:samba多用户共享配置(实验三).docx

    实验三:Samba多用户共享配置 一、实验目的 掌握Samba多用户共享配置 二、实验内容与步骤 1 、按权限对目录进行分组访问(配置用户名和密码访问的samba服务) # useradd -s /sbin/nologin renli //先建立系统用户 # ...

    linux下samba服务安装包及依赖包

    centos7.6 smb samba

    samba服务系列包

    samba服务相关包,包括: samba-4.2.3-10.el7.x86_64.rpm samba-client-4.2.3-10.el7.x86_64.rpm samba-client-libs-4.2.3-10.el7.x86_64.rpm samba-common-4.2.3-10.el7.noarch.rpm samba-common-libs-4.2.3-10.el7...

Global site tag (gtag.js) - Google Analytics