Linux Dockerコンテナで実行するためにclamdプロセスを使用しました。https://hub.docker.com/r/mkodockx/docker-clamav/
マイユースケースは、サービスがユーザーがアップロードしたすべての添付ファイルをスキャンし、アップロードサービスに応答してスキャンステータスを返すことです。
12MBなどの小さな.pdfファイルなど、一部のファイルをスキャンするのに時間がかかります(〜2分)。
bash-5.0$ clamdscan 12MB-PDF.pdf
/tmp/12MB-PDF.pdf: OK
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 121.192 sec (2 m 1 s)
Start Date: 2021:08:24 16:02:09
End Date: 2021:08:24 16:04:10
bash-5.0$
bash-5.0$ top
Mem: 4102684K used, 4050300K free, 412640K shrd, 30660K buff, 2356148K cached
CPU: 16% usr 0% sys 0% nic 83% idle 0% io 0% irq 0% sirq
Load average: 0.21 0.07 0.02 2/524 1844
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
26 1 clamav S 1251m 15% 4 17% clamd
25 1 clamav S 9372 0% 3 0% freshclam -d
1844 553 clamav S 5884 0% 1 0% clamdscan 12MB-PDF.pdf
553 0 clamav S 2420 0% 5 0% bash
560 0 clamav S 2412 0% 3 0% bash
1 0 clamav S 2228 0% 1 0% {bootstrap.sh} /bin/bash /bootstrap.sh
567 560 clamav R 1584 0% 3 0% top
以下は参考用のclamd.confです。
###############
# General
###############
DatabaseDirectory /var/lib/clamav
TemporaryDirectory /tmp
LogTime yes
PidFile /run/clamav/clamd.pid
LocalSocket /run/clamav/clamd.sock
TCPSocket 3310
Foreground yes
###############
# Results
###############
DetectPUA yes
ExcludePUA NetTool
ExcludePUA PWTool
AlgorithmicDetection yes
Bytecode yes
###############
# Scan
###############
ScanPE yes
DisableCertCheck yes
ScanELF yes
AlertBrokenExecutables yes
ScanOLE2 yes
ScanPDF yes
ScanSWF yes
ScanMail yes
PhishingSignatures yes
PhishingScanURLs yes
ScanHTML yes
ScanArchive yes
###############
# Scan
###############
MaxScanSize 2000M
MaxFileSize 2000M
StreamMaxLength 2000M
MaxRecursion 30
MaxFiles 50000
MaxEmbeddedPE 40M
MaxHTMLNormalize 40M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
MaxPartitions 128
MaxIconsPE 200
PCREMatchLimit 10000
PCRERecMatchLimit 10000
1GB程度の大きな.binファイルでも同じパフォーマンスが低下し、ファイルをスキャンしてスキャン結果を提供するのに2分以上かかります。
誰でもスキャン時間を最適化する方法についてのヒントを提供できますか?
ありがとうございます。