저는 소규모 비디오 스트리밍 사이트를 운영하고 있는데 내 사이트의 비디오에서 몇 가지 문제를 발견했습니다.
맨 위
top - 15:43:48 up 34 days, 1:22, 1 user, load average: 37.80, 38.08, 38.38
Tasks: 184 total, 1 running, 183 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.5 sy, 0.0 ni, 6.0 id, 85.1 wa, 0.0 hi, 7.8 si, 0.0 st
KiB Mem : 32730324 total, 1575916 free, 1470200 used, 29684208 buff/cache
KiB Swap: 33313788 total, 33308768 free, 5020 used. 30448240 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3 root 20 0 0 0 0 S 16.9 0.0 5554:20 ksoftirqd/0
2827 www-data 20 0 398696 84756 5548 S 6.0 0.3 213:14.78 nginx
2828 www-data 20 0 324716 10900 5548 S 1.7 0.0 14:46.99 nginx
40 root 20 0 0 0 0 S 0.3 0.0 148:03.47 ksoftirqd/5
198 root 0 -20 0 0 0 S 0.3 0.0 11:16.66 kworker/0:+
1086 root 20 0 44044 3668 2988 R 0.3 0.0 0:00.21 top
2829 www-data 20 0 319180 6660 5396 S 0.3 0.0 1:51.37 nginx
27962 root 20 0 109956 9704 7836 S 0.3 0.0 0:00.53 exim4
1 root 20 0 204648 5072 3644 S 0.0 0.0 1:47.36 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.16 kthreadd
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
7 root 20 0 0 0 0 S 0.0 0.0 31:06.23 rcu_sched
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root rt 0 0 0 0 S 0.0 0.0 0:01.11 migration/0
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dr+
11 root rt 0 0 0 0 S 0.0 0.0 1:16.83 watchdog/0
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
알토
Total DISK READ : 59.96 M/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 59.96 M/s | Actual DISK WRITE: 8.84 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2902 be/4 www-data 377.17 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2845 be/4 www-data 1508.66 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2864 be/4 www-data 754.33 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2832 be/4 www-data 1005.78 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2888 be/4 www-data 754.33 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2883 be/4 www-data 848.62 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2836 be/4 www-data 1382.94 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2849 be/4 www-data 628.61 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2841 be/4 www-data 660.04 K/s 0.00 B/s 0.00 % 99.58 % nginx: wo~er process
2853 be/4 www-data 880.05 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2831 be/4 www-data 754.33 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2859 be/4 www-data 1382.94 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2835 be/4 www-data 1005.78 K/s 0.00 B/s 0.00 % 99.87 % nginx: wo~er process
2851 be/4 www-data 628.61 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2834 be/4 www-data 754.33 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2839 be/4 www-data 880.05 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2860 be/4 www-data 251.44 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2892 be/4 www-data 628.61 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2843 be/4 www-data 880.05 K/s 0.00 B/s 0.00 % 99.99 % nginx: wo~er process
2833 be/4 www-data 377.17 K/s 0.00 B/s 0.00 % 99.97 % nginx: wo~er process
2856 be/4 www-data 754.33 K/s 0.00 B/s 0.00 % 99.97 % nginx: wo~er process
내 사이트를 중지하고 디스크 속도를 실행해 보면 이것이 나타납니다.
# dd if=/dev/zero of=tempfile bs=10M count=1024 conv=fdatasync,notrunc status=progress
10622074880 bytes (11 GB, 9.9 GiB) copied, 46.0385 s, 231 MB/s
1024+0 records in
1024+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 92.1228 s, 117 MB/s
따라서 현재 속도를 120MB/s로 높일 수 있으며 iotop에서는 60MB/s에 도달할 수 있다고 보고합니다. 절반 속도만 사용하면 왜 높은 로드 IO 문제가 발생합니까?
이 문제를 어떻게 조정하거나 해결할 수 있습니까? 저는 mp4 비디오를 제공하기 위해 nginx를 사용하고 있습니다.
답변1
SSD가 처음 나왔을 때 SSD가 항상 HDD보다 빠르다는 일반적인 오해가 있었습니다. 이는 단순히 사실이 아닙니다. HDD 시대에도 쉽게 125MB/s 이상에 도달할 수 있었지만 유일한 요구 사항은순서대로읽기 또는 쓰기. 이에 비해 원시 SSD에 대한 순차 쓰기는 일반적으로 이보다 느리고 읽기 속도도 그다지 인상적이지 않은 경우가 많습니다.
간단히 말해서: 당신의DDnginx가 무작위 액세스를 사용하는 동안 순차 처리량을 테스트합니다. HDD는 무작위 검색 작업을 위한 용량이 매우 제한되어 있으며 모든 세대의 7.2k RPM 드라이브에 대해 초당 100회 미만의 작업을 수행합니다.(10,000+에 비해IOPS최신 SSD에서) 작업이 임의 파일 시스템 액세스에 의존하는 경우 전체 처리량이 크게 제한될 수 있습니다. 오늘날 100 IOPS는 너무 느립니다. 따라서 HDD가 오늘 "발명"되었다면 현실과 동떨어진 것으로 무시될 것입니다.
다른 웹 애플리케이션보다 순차적 대용량 파일 액세스가 더 일반적인 비디오를 제공하고 있기 때문에 실제 처리량 수치는 더 이상 나쁘지 않습니다. 순차 벤치마크에서 117MB/s가 표시될 때 실제 처리량은 59.96MB/s입니다. 벌써 꽤 인상적이네요. 해결책은 더 많은 HDD로 업그레이드하거나, 더 많은 IOPS를 위해 더 빠른 RPM의 HDD를 사용하거나, SSD로 마이그레이션하는 것일 수 있습니다.