vsftp在ubuntu上的性能如何测试
导读:vsftp在Ubuntu上的性能测试方案 一 测试准备与基线 安装与最小配置 安装服务与客户端:sudo apt update && sudo apt install -y vsftpd ftp lftp。 基础配置 /...
vsftp在Ubuntu上的性能测试方案
一 测试准备与基线
- 安装与最小配置
- 安装服务与客户端:sudo apt update & & sudo apt install -y vsftpd ftp lftp。
- 基础配置 /etc/vsftpd.conf(按需调整):
- 启用本地用户与写入:local_enable=YES、write_enable=YES
- 并发与限速:max_clients=300、max_per_ip=10、local_max_rate=0(不限速,便于压测;测试完再按业务设值)
- 安全与隔离:chroot_local_user=YES、anonymous_enable=NO
- 创建测试用户与数据
- sudo useradd -m -s /bin/bash ftpuser & & echo “ftpuser:ftpuser” | sudo chpasswd
- 放一个大文件:dd if=/dev/zero of=/home/ftpuser/testfile bs=1M count=1024(约1GB)
- 防火墙与监听
- sudo ufw allow 21/tcp;被动模式端口段(如 60000-61000)也需放行:sudo ufw allow 60000:61000/tcp
- 确认监听:ss -tulnp | grep :21
- 建立网络与磁盘基线
- 网络带宽基线(服务端执行):iperf3 -s;客户端:iperf3 -c SERVER_IP -t 30 -P 4
- 磁盘基线(服务端执行):
- fio --name=seqread --filename=/home/ftpuser/testfile --direct=1 --rw=read --bs=1M --size=1G --numjobs=4 --runtime=60 --time_based
- fio --name=randread --filename=/home/ftpuser/testfile --direct=1 --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --time_based
- 基线意义:若网络或磁盘本身达不到目标速率,FTP吞吐将被“底座”限制,应先优化网络/存储再测FTP。
二 吞吐与并发测试步骤
- 吞吐测试(单连接与多线程)
- 下载(服务端→客户端)
- 单连接:lftp -u ftpuser,ftpuser SERVER_IP -e “get testfile -o /dev/null; quit”
- 多线程(GNU parallel):seq 1 8 | parallel -j 8 lftp -u ftpuser,ftpuser SERVER_IP -e “get testfile -o /dev/null; quit”
- 上传(客户端→服务端)
- 单连接:lftp -u ftpuser,ftpuser SERVER_IP -e “put /path/bigfile -o /home/ftpuser/putfile; quit”
- 多线程:seq 1 8 | parallel -j 8 lftp -u ftpuser,ftpuser SERVER_IP -e “put /path/bigfile -o /home/ftpuser/putfile_{ } ; quit”
- 记录要点:每次测试前后清理缓存(echo 3 | sudo tee /proc/sys/vm/drop_caches),并计算平均速率(MB/s)= 文件大小 / 用时。
- 下载(服务端→客户端)
- 并发连接与稳定性
- 逐步增加并发(示例脚本,按需调整并发数与持续时间)
- for c in 50 100 200 500; do echo “=== $c 并发 ===”; lftp -u ftpuser,ftpuser SERVER_IP -e “set net:max-retries 2; set net:timeout 10; mirror -R /path/bigdir /home/ftpuser/loadtest_$c; quit” & sleep 2; done
- 观察是否出现 421 Service not available、连接超时、明显速率衰减。
- 连接数上限摸底
- 使用 netcat/socat 或编写简单脚本发起大量控制连接(不传大文件),观察 max_clients 与系统文件描述符限制(ulimit -n、/proc/sys/fs/file-max)对可建立连接数的影响。
- 逐步增加并发(示例脚本,按需调整并发数与持续时间)
- 加密场景(TLS)
- 生成自签证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
- vsftpd.conf 启用:ssl_enable=YES、rsa_cert_file=/etc/ssl/certs/vsftpd.crt、rsa_private_key_file=/etc/ssl/private/vsftpd.key
- 使用 lftp 的 ftps:// 进行同样的吞吐/并发测试,比较明文 vs TLS 的CPU占用与吞吐差异。
三 监控与瓶颈定位
- 实时资源监控
- 进程与CPU/内存:top -p $(pgrep vsftpd);或 htop 过滤 vsftpd
- 网络与连接:ss -tulnp | grep :21;netstat -tulnp | grep vsftpd
- 磁盘I/O:iostat -x 1;dstat -d;iotop(定位哪个进程占用磁盘)
- 系统整体:vmstat 1
- vsftpd自身限速参数
- local_max_rate(本地用户限速)、anon_max_rate(匿名用户限速)用于“控速验证”和“业务限速回归”,便于观察限速生效与吞吐上限变化。
四 结果判读与优化建议
- 判读要点
- 若“网络基线带宽”显著低于FTP实测吞吐,瓶颈在网络;若“磁盘基线”更低,瓶颈在存储;若两者都高而FTP吞吐低,瓶颈多在并发配置、TLS开销、系统限制(文件描述符、端口、CPU)。
- 关注 CPU 软中断、iowait、TCP重传、连接建立成功率与超时等指标,定位是计算、I/O还是网络问题。
- 常见优化
- 并发与端口:合理提升 max_clients、max_per_ip;被动模式端口段放宽并放行防火墙;提高系统文件描述符上限(ulimit -n、/etc/security/limits.conf、/proc/sys/fs/file-max)。
- 存储与文件系统:使用 direct I/O(避免页缓存干扰)、合适的调度器(如 deadline/noop)、确保测试文件与挂载点在同一高速存储上。
- 网络与协议:优先保证链路与交换机背板带宽;TLS测试时关注 CPU AES-NI 是否启用;必要时考虑 FTP 替代协议(如 SFTP/HTTPS)在加密场景下的性能权衡。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: vsftp在ubuntu上的性能如何测试
本文地址: https://pptw.com/jishu/759662.html
