우분투에는 오래된 PHP 세션을 찾고 삭제하는 크론 작업이 있습니다.
# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] \
&& [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 \
-maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir \
fuser -s {} 2> /dev/null \; -delete
내 문제는이 프로세스가 많은 디스크 IO와 함께 실행하는 데 오랜 시간이 걸린다는 것입니다. 내 CPU 사용량 그래프는 다음과 같습니다.
정리 실행은 청록색 스파이크로 표시됩니다. 이 기간이 시작될 때 PHP 정리 작업은 기본 09 분과 39 분에 예약되었습니다. 15:00에 나는 cron에서 39 분 시간을 제거 했으므로 크기의 두 배인 정리 작업은 절반으로 자주 실행됩니다 (피크는 두 배 넓고 절반은 빈번하게 나타납니다).
IO 시간에 해당하는 그래프는 다음과 같습니다.
디스크 작업 :
약 14,000 개의 세션이 활성화 된 정점에서 정리는 CPU의 한 코어의 100 %와 전체 기간 동안 디스크 IO의 100 % 인 것으로 보이는 25 분 전체에 걸쳐 실행되는 것으로 볼 수 있습니다. 왜 자원 집약적입니까? ls
세션 디렉토리는 /var/lib/php5
두 번째의 일부에 불과 걸립니다. 그렇다면 왜 오래된 세션을 다듬는 데 25 분이 걸립니까? 이 속도를 높이기 위해 할 수있는 일이 있습니까?
이 장치의 파일 시스템은 현재 Ubuntu Precise 12.04 64 비트에서 실행중인 ext4입니다.
편집 : 나는로드가 비정상적인 프로세스 "퓨저"때문이라고 생각합니다 (단순히 rm
내가보고있는 성능보다 빠른 광경을 기대하기 때문에 ). 퓨저 사용을 제거하고 어떻게되는지 보겠습니다.