커피닉스, 시스템 엔지니어의 쉼터
  mod_ssl 설정시 - (13)Permission denied: couldn't grab the accept mutex 에러 처리. 작성일 : 2007/03/20 16:23
 
  • 글쓴이 : 류범룡
  • 조회수 : 12737
     
    제  목 :  (13)Permission denied: couldn't grab the accept mutex 에러발생시
    작성자 : 류범룡
    작성일 : 2007.03.20

    apache 에서 mod_ssl을 설치를 완료하고.

    # ./apachectlstartssl   실행시 아래와 같은 에러를 만나는 경우가 있습니다.

    [Fri Mar 16 10:42:59 2007] [emerg] (13)Permission denied: couldn't grab the accept mutex
    [Fri Mar 16 10:42:59 2007] [emerg] (13)Permission denied: couldn't grab the accept mutex
    [Fri Mar 16 10:42:59 2007] [emerg] (13)Permission denied: couldn't grab the accept mutex
    [Fri Mar 16 10:42:59 2007] [emerg] (13)Permission denied: couldn't grab the accept mutex



    ** 위와 같은 문제가 발생한다면, ssl.conf에 (설정에 따라 httpd.conf에)

    AcceptMutex flock
    LockFile /usr/local/Apache2/logs/httpd.lock

    를 추가해 주면 이상없이 동작하게 됩니다.



    이해를 돕고자 관련 내용을 대한 적어 봅니다.


    1. AcceptMutex 란?
      : apache performance tuning 에 관련 내용이 설명 되어 있습니다.

    http://httpd.apache.org/docs/2.0/en/misc/perf-tuning.html


    Mutex(Mutual Exclusion) : '상호 배제' 임계 구역을 가진 thread(쓰레드)들이 동시에 실행 되지 않고, 상호 배제되어 실행되는것을 말합니다.

    apache 에서는 이 Mutex를 사용합니다. (보다 자세한 것은 위의 링크를 참고 하세요. 자세히 나와 있습니다.) 이런 Mutex 방식을 변경해주는것이 "AcceptMutex" 입니다.

    AcceptMutex flock

    This method uses the flock(2) system call to lock a lock file (located by the LockFile directive).

    이 방법은 잠금 파일(a lock file)을 잠그기 위해(to lock) flock(2) system call를 사용한다 (LockFile directive에 의해 위치 되어진다.)


    AcceptMutex fcntl

    This method uses the fcntl(2) system call to lock a lock file (located by the LockFile directive).

    이 방법은 잠금 파일(a lock file)을 잠그기 위해(to lock) fcntl(2) system call를 사용한다 (LockFile directive에 의해 위치 되어진다.)


    기타

    AcceptMutex sysvsem
    AcceptMutex pthread
    AcceptMutex posixsem



    가장 많이 사용되어지는 'AcceptMutex flock', 'AcceptMutex fcntl' 만 적어 봤습니다. 자세한 것은 아파치 메뉴얼(위의 링크)를 참고 하십시오.



    2. mod_ssl 의 Mutex 는?
      : mod_ssl 의 Mutex를 설정 방법도 존재 합니다.(ssl.conf 혹은 httpd.conf)

    http://httpd.apache.org/docs/2.0/en/mod/mod_ssl.html


    mod_ssl 의 설정은

    # SSLMutex 로 설정 합니다.
    SSLMutex file:/usr/local/apache/logs/ssl_mutex

    ** SSLMutex 의 경우 AcceptMutex 지시어가 있을 경우에는 사용이 되지 않습니다. **
    ** 즉, 지시어가 두 개 있을 경우 AcceptMutex 가 우선시 됩니다. **


    "ssl.conf" 의 Mutex 설정을 보면

    SSLMutex file:/usr/local/apache/logs/ssl_mutex

    이렇게 되어 있습니다. 이 의미는 'fcntl() 와 flock()' 중에서 선택하여 시스템에 가장 적절한 lock 방식을 채택해 준다는 말입니다. 다른 문법은 위의 apache manual(링크)를 확인하시면 됩니다.



    3. 그러면 문제가 왜 발생 하는가?
      1) 잠금파일(lock file)가 제대로 구현 되지 않을 때.
      2) 시스템에서 lock file을 지원하지 않을경우

    전자는 맨 윗글의 'AcceptMutex' 와 'LockFile'를 직접 지정해 주면, 해결이 됩니다. (SSLMutex 와 AccecptMutex 가 두 개 일때는 AcceptMutex가 우선 됨을 잊지 마세요.)
    후자의 경우 관련 방식을 변경해 가며 해당 시스템에 맞는 설정을 맞춰 나가야 합니다.


    간단하게 글 적어 보았습니다. 많은 도움 되셨으면 합니다.


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=1482