SFTP 속도 지연 이슈 — 서버 점검부터 전송 테스트까지 완전 정리
SFTP 속도 지연 이슈 — 서버 점검부터 전송 테스트까지 완전 정리
배경
APP 담당자로부터 서버 SFTP 사용 시 속도 지연 이슈 확인 요청이 들어왔다. 서버 자원부터 네트워크, 실제 전송 테스트까지 단계별로 확인한 내용을 정리한다.
1단계 — 기본 서버 자원 확인
가장 먼저 서버 과부하 여부를 확인한다.
# CPU 사용률
top
# 메모리 사용량
free -h
# 디스크 용량
df -h
→ CPU / Memory / Disk 용량 모두 이상 없음 확인
2단계 — 네트워크 인터페이스 확인
# NIC 상태 및 패킷 드롭/에러 확인
ip -s link
# NIC 실제 연결 속도 확인
ethtool ens192 | grep -E 'Speed|Duplex'
확인 포인트
- errors / dropped 값이 지속적으로 증가하는지 확인
- Speed가 예상 속도(1G/10G)로 정상 협상됐는지 확인
- Duplex가 Full인지 확인 (Half면 속도 저하 원인)
→ 10G Full duplex 정상 확인, RX dropped 소량 있었으나 증가 추이 없음
3단계 — SFTP/SSH 설정 확인
속도 지연의 흔한 원인 두 가지를 먼저 확인한다.
# SSH 데몬 설정 확인
grep -E 'UseDNS|GSSAPIAuthentication|Compression' /etc/ssh/sshd_config
# 현재 SSH 연결 상태
ss -tnp | grep :22
# 접속 중인 세션 확인
who
w
# SSH 로그 확인
tail -200 /var/log/secure | grep -E 'session|sftp|timeout|error'
확인 포인트
- UseDNS yes 설정 시 역방향 DNS 조회 지연으로 속도 저하 발생 가능
- GSSAPIAuthentication yes 설정 시 Kerberos 인증 타임아웃으로 지연 가능
- 두 항목 모두 no 권장
4단계 — 디스크 실제 I/O 속도 측정
df는 용량만 확인하고 실제 I/O 속도는 알 수 없다. 아래 명령어로 직접 측정한다.
# 디스크 쓰기 속도 측정 (운영 중엔 100M 권장)
dd if=/dev/zero of=/tmp/testfile bs=100M count=1 oflag=direct
# 측정 후 파일 삭제
rm /tmp/testfile
옵션 설명
| if=/dev/zero | 0으로 채워진 가상 장치 (CPU 부하 없음) |
| of=/tmp/testfile | 실제 디스크에 쓰기 |
| bs=100M | 한 번에 100MB씩 |
| count=1 | 1회 실행 |
| oflag=direct | OS 캐시 우회, 실제 디스크 속도 측정 |
운영 중 실행 시 디스크 I/O 부하가 발생할 수 있으므로 bs=100M 이하로 줄여서 사용 권장
→ 648 MB/s 확인, 디스크 정상
5단계 — I/O 모니터링 (sysstat 설치 필요)
# sysstat 설치
yum install sysstat -y
# 디스크 I/O 상세 모니터링
iostat -xz 1 5
# 네트워크 트래픽 모니터링
sar -n DEV 1 5
6단계 — 서버 간 SFTP 전송 테스트
서버 자원에 이상이 없을 경우 실제 서버 간 전송 테스트로 속도를 직접 측정한다.
테스트 파일 생성
# 30MB 테스트 파일 생성
dd if=/dev/zero of=/tmp/testfile_30M bs=30M count=1
SFTP 접속 및 전송
# SFTP 접속
sftp test@2.2.2.2
# 접속 후 파일 전송
put /tmp/testfile_30M /tmp/
# 종료
exit
# 테스트 파일 삭제
rm /tmp/testfile_30M
네트워크 연결 안 될 때 확인
# ping 확인
ping -c 4 2.2.2.2
# 22번 포트 오픈 여부 확인
nc -zv 2.2.2.2 22
7단계 — SSH 공개키 인증 설정 (LDAP 계정 환경)
LDAP 계정 환경에서 패스워드 인증이 막혀있을 경우 공개키 인증을 설정한다.
접속 실패 원인 디버깅
# 상세 디버그 모드로 접속 시도
sftp -vvv test@2.2.2.2
아래와 같이 키 파일을 못 찾는 메시지가 나오면 공개키 등록이 필요하다.
debug3: no such identity: /root/.ssh/id_ed25519: No such file or directory
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
공개키 생성 및 등록
# 1. 접속하는 서버(1.1.1.1)에서 키 생성 (엔터 3번)
ssh-keygen -t ed25519
# 2. 생성된 공개키 확인
cat ~/.ssh/id_ed25519.pub
대상 서버(2.2.2.2)에 공개키 등록
LDAP 계정은 홈디렉토리 위치가 다를 수 있으므로 먼저 확인한다.
# 홈디렉토리 확인
getent passwd test | cut -d: -f6
# UID/GID 확인
id test
확인 후 해당 경로에 공개키 등록한다.
# .ssh 디렉토리 생성
mkdir -p /home/test/.ssh
chmod 700 /home/test/.ssh
# 공개키 등록
vi /home/test/.ssh/authorized_keys
# 위에서 복사한 공개키 내용 붙여넣기
# 권한 설정
chmod 600 /home/test/.ssh/authorized_keys
# 소유권 설정 (id 명령어로 확인한 그룹명 사용)
chown -R test:testgroup /home/test/.ssh
권한이 맞아야 하는 값
| .ssh/ | 700 |
| authorized_keys | 600 |
authorized_keys 파일은 sshd 재시작 없이 실시간으로 반영된다.
8단계 — FileZilla 전송 속도 확인
로그 파일 위치
C:\Users\사용자명\AppData\Roaming\FileZilla\
로깅 활성화 방법
FileZilla 로그가 없을 경우 아래 설정으로 활성화한다.
편집 → 설정 → 로깅
→ "로그를 파일에 저장" 체크
→ 로그 파일 경로 지정
→ 확인
활성화 후 전송 시 아래와 같이 기록된다.
Status: Starting upload of 파일명
Status: File transfer successful, transferred X bytes in X seconds
실시간 전송 속도 확인
FileZilla 상단 메시지 창에서 실시간으로 확인 가능하다.
서버에서 간단히 시간 측정하는 방법
FileZilla 로그가 없을 경우 서버에서 직접 측정할 수 있다.
# 전송 전
date
# 파일 전송 후
date
점검 결과 요약
| CPU | top | 정상 |
| Memory | free -h | 정상 |
| Disk 용량 | df -h | 정상 |
| Disk I/O 속도 | dd | 648 MB/s 정상 |
| NIC 속도 | ethtool | 10G Full duplex 정상 |
| 패킷 드롭 | ip -s link | 소량 확인 |
| 네트워크 사용량 | Zabbix 그래프 | 최대 6Mbps / 10G 여유 |
| SSH 설정 | grep sshd_config | 정상 |
결론
서버 자원 및 네트워크 자체는 이상 없음. 속도 지연 원인이 서버 외부(클라이언트 환경, VPN, 네트워크 구간)일 가능성이 높아 추가 확인 필요.
다음 확인 사항
- 클라이언트 접속 경로 (사내망 / VPN / 외부망)
- 사용 중인 SFTP 클라이언트 프로그램
- 다른 PC에서도 동일 증상인지 여부
'infra' 카테고리의 다른 글
| Storage 및 가상화 스토리지 개념 (0) | 2026.03.30 |
|---|---|
| docker 테스트 (0) | 2025.10.20 |
| 서버엔지니어 신입 시절 — 실무에서 아무도 안 알려주는 것들 (1) | 2021.01.28 |