infra

SFTP 속도 지연 이슈 — 서버 점검부터 전송 테스트까지 완전 정리


SFTP 속도 지연 이슈 — 서버 점검부터 전송 테스트까지 완전 정리

배경

APP 담당자로부터 서버 SFTP 사용 시 속도 지연 이슈 확인 요청이 들어왔다. 서버 자원부터 네트워크, 실제 전송 테스트까지 단계별로 확인한 내용을 정리한다.


1단계 — 기본 서버 자원 확인

가장 먼저 서버 과부하 여부를 확인한다.

 
 
bash

 

# CPU 사용률
top

# 메모리 사용량
free -h

# 디스크 용량
df -h

→ CPU / Memory / Disk 용량 모두 이상 없음 확인


2단계 — 네트워크 인터페이스 확인

 
 
bash
# 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 설정 확인

속도 지연의 흔한 원인 두 가지를 먼저 확인한다.

 
 
bash
# 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 속도는 알 수 없다. 아래 명령어로 직접 측정한다.

 
 
bash
# 디스크 쓰기 속도 측정 (운영 중엔 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 설치 필요)

 
 
bash
# sysstat 설치
yum install sysstat -y

# 디스크 I/O 상세 모니터링
iostat -xz 1 5

# 네트워크 트래픽 모니터링
sar -n DEV 1 5

6단계 — 서버 간 SFTP 전송 테스트

서버 자원에 이상이 없을 경우 실제 서버 간 전송 테스트로 속도를 직접 측정한다.

테스트 파일 생성

 
 
bash
# 30MB 테스트 파일 생성
dd if=/dev/zero of=/tmp/testfile_30M bs=30M count=1

SFTP 접속 및 전송

 
 
bash
# SFTP 접속
sftp test@2.2.2.2

# 접속 후 파일 전송
put /tmp/testfile_30M /tmp/

# 종료
exit

# 테스트 파일 삭제
rm /tmp/testfile_30M

네트워크 연결 안 될 때 확인

 
 
bash
# ping 확인
ping -c 4 2.2.2.2

# 22번 포트 오픈 여부 확인
nc -zv 2.2.2.2 22

7단계 — SSH 공개키 인증 설정 (LDAP 계정 환경)

LDAP 계정 환경에서 패스워드 인증이 막혀있을 경우 공개키 인증을 설정한다.

접속 실패 원인 디버깅

 
 
bash
# 상세 디버그 모드로 접속 시도
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)

공개키 생성 및 등록

 
 
bash
# 1. 접속하는 서버(1.1.1.1)에서 키 생성 (엔터 3번)
ssh-keygen -t ed25519

# 2. 생성된 공개키 확인
cat ~/.ssh/id_ed25519.pub

대상 서버(2.2.2.2)에 공개키 등록

LDAP 계정은 홈디렉토리 위치가 다를 수 있으므로 먼저 확인한다.

 
 
bash
# 홈디렉토리 확인
getent passwd test | cut -d: -f6

# UID/GID 확인
id test

확인 후 해당 경로에 공개키 등록한다.

 
 
bash
# .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 로그가 없을 경우 서버에서 직접 측정할 수 있다.

 
 
bash
# 전송 전
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에서도 동일 증상인지 여부