Q&A

게시판 관리자 메일 등록 후 글등록 시 딜레이 현상에 관해 문의드립니다.

2024.10.24 06:20
190
1
CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4

게시판 관리 > 고급 설정 > 관리자 메일 등록 후 글이나 댓글이 등록 될 때 등록한 이메일로 메일을 받으려고 합니다. 이메일 설정은 다음(daum) smtp로 설정 후 정상작동되는것 까지 확인 했습니다.

 

20241024_151039.png

 

문제는 테스트로 게시판에 간단한 글 작성 후 글등록을 누르면 1~2초 정도 딜레이 된 다음 글 등록이 완료되는 증상이 있습니다. 같은 게시판에서 관리자 메일을 등록하지 않으면 평소처럼 곧바로 글 등록이 완료되구요.

 

추정컨대 매일 발송 과정을 거친 이후에 글 등록 과정이 완료되는것 같은데요.

다음(daum) smtp만의 문제인지 게시판 글 댓글 등록 시 이메일로 받으시는 분들은 혹시 같은 증상이 재현되시거나 아니면 다른 방법으로 글 댓글 등록 시 이메일로 받으시는 분들의 조언 부탁드립니다.

 

[ 내용추가 ]

시스템 설정> 비동기 작업 은 이런 경우에도 효과가 있는 방법일까요? 있다면 가상서버는 아래 내용 중 crontab 하나만 처리하면 되는 부분인지 문의드립니다.

 

20241024_151039.png

마트몬 Lv. 8

댓글 25

  • 2024.10.24 12:19 #1842628

    메일 발송하는 데 은근히 오래 걸립니다.

    특히 SMTP는 패킷이 여러 번 왔다갔다하는 방식이라 더 오래 걸립니다.

    이럴 때 활용하라고 있는 것이 비동기 작업 기능이죠.

    안내대로 설정하셔서 메일 발송과 빠른 응답속도라는 두 마리 토끼를 다 잡아 보시기 바랍니다.^^

     

    단, 일반적인 우분투 서버에서 www-data 계정으로 직접 로그인할 수는 없으니,

    root 권한으로 crontab -e -u www-data 명령을 사용하여

    www-data 계정의 크론탭을 대리작성(?)하는 꼼수가 필요할 것 같습니다.

  • 2024.10.24 12:45 #1842641
    그렇지 않아도 root 권한으로 크론탭 설정을 하고 테스트를 해보니 에러가 발생해서 포기상태였는데 알려주신 팁으로 다시 한번 시도 해보겠습니다. 매번 답변 감사드립니다.
  • 2024.10.24 14:28 #1842650

    알려주신 www-data 계정으로 진행을 해보았는데 에러메시지가 발생하는데요. 혹시 원인을 알수 있을까요?

    rhymix_version : 2.1.18 / php : 7.4.33 (64-bit) / server : nginx/1.18.0 os : Linux 5.15.0-52-generic

     

     

    1.  

    0.png

     

    2.

    1.png

     

    3.

    5.png

     

    4. 글 작성 후 등록 버튼 클릭 시 아래 오류 메시지창이 뜨고 확인을 누르면 글 등록화면 상태이지만 게시판 목록으로 이동하면 이미 글 등록은 되어 있는 상태입니다.

    4.png

    5.

    3.png

    222222.png

    6. 현 서버의 max_execution_time은 30초로 설정되어 있습니다.

    1111.png

     

    7. 설정한 경로에 에러로그 queue.log 는 따로 보이질 않습니다.어떤 부분을 다시 한번 체크해봐야 할런지 조언 부탁드립니다.

  • 2024.10.24 14:59 #1842679
    SMTP에 사용하는 라이브러리가 비동기 처리시 문제를 일으키는 것 같습니다.
    이건 코어에서 수정해야겠네요.
  • 2024.10.24 15:00 #1842685
    답변감사합니다.
    systemd timer 가이드에 안내된 대로 설정 후 테스트를 해봐도 같은 에러메시지가 발생하고 하더군요.
  • 2024.10.24 16:52 #1842704
    개발 버전(master 브랜치)에서 수정했으니 다시 확인 부탁드립니다.
    common/framework/drivers/mail 폴더에 있는 파일들만 다시 업로드해 보셔도 됩니다.
  • 2024.10.25 01:09 #1842757

    감사합니다. 시도 해 본 결과입니다.

     


    1. common/framework/drivers/mail 폴더에 있는 파일들만 다시 업로드


    2. www-data 계정으로 크론탭 작성


    3. 비동기 작업 사용 체크


    4. 게시판 글등록 시 -> 이전에 발생했던 딜레이나 아래 서버 오류 없이 정상 글 등록

    39b4500c3d101b9430c77b90566e8ad5.png

    5. 관리자 메일로 1분 지난 뒤 확인 해보면 메일이 발송되지 않고 메일, SMS 및 푸시 알림 관리 모듈>메일발송내역에도 내역이 존재하지 않습니다.

    이 상태에서 메일, SMS 및 푸시 알림 관리 모듈> 메일 테스트 ( 하단 정상발송되었습니다. 문구 표시 ) > 1분이 지난 뒤 메일 발송내역을 보면 발송내역이 없습니다.

     

    6. 비동기 작업 사용 체크 해제 > 메일, SMS 및 푸시 알림 관리 모듈 > 메일 테스트 > 메일 발송 내역을 보면 정상 발송 내역이 존재하고 실제 메일을 확인 해보면 메일이 도착해 있습니다.

     

    aaa.png

  • 2024.10.25 01:36 #1842774
    혹시 /var/log/nginx/queue.log에 에러메시지 찍힌 것은 없나요?
  • 2024.10.25 01:42 #1842778
    네 설정한 경로( /var/log/nginx ) 생성된 queue.log 파일은 없구요. 테스트 과정 중에도 따로 에러메시지가 출력된 부분은 없습니다.
  • 2024.10.25 02:05 #1842782

    로그 파일이 아예 생성되지도 않았다면 크론탭이 제대로 돌아가지 않고 있거나, 권한 문제가 있는 것 같습니다.

  • 2024.10.25 02:14 #1842787

    /var/spool/cron/crontabs/www-data 파일의 권한을 말씀하시는거죠?

    20241025_111405.png

  • 2024.10.25 02:29 #1842792
    크론탭 설정 파일의 퍼미션은 신경쓸 필요 없습니다. /var/log/nginx/queue.log 파일을 생성할 권한이 없거나, php 명령을 실행할 권한이 없거나, 이럴 가능성이 높습니다.

    웹크론 방식 사용시 호출해야 할 주소를 브라우저에서 한 번 방문해 보시겠어요?
  • 2024.10.25 02:31 #1842796

    해결되었습니다. www-data 권한의 문제였던 것 같습니다. 

    아래 쳇 gpt 답변에서 두번째 queue.log 파일이 생성 되는 경로를 변경, 수정 후 확인 해보니 해당 경로에 queue.log 이 생성되고 메일도 정상적으로 발송이 되고 있습니다.

     

    [ 수정 전 : /var/log/nginx/queue.log ]

    * * * * * php /var/www/html/index.php common.cron >> /var/log/nginx/queue.log 2>&1

     

    [ 수정 후 : /tmp/queue.log ]

    * * * * * /usr/bin/php /var/www/html/index.php common.cron >> /tmp/queue.log 2>&1
    ----------------------------------------------------------------------------

    /var/log/nginx 디렉터리의 권한 확인

    www-data 계정이 /var/log/nginx 디렉터리에 파일을 생성할 수 있는 권한이 있는지 확인합니다. 만약 www-data 계정이 해당 디렉터리에 파일을 생성할 수 없다면, 권한을 조정해 주세요.

    sudo chown www-data:www-data /var/log/nginx
    sudo chmod 755 /var/log/nginx

     

    로그 파일 경로 확인 및 경로 변경 테스트
    /var/log/nginx/queue.log 위치에 쓰기 문제가 있다면, 임시로 www-data 계정이 확실히 접근 가능한 다른 경로를 지정해 보는 것도 좋습니다. 예를 들어 /tmp/queue.log로 설정하여 실행해 보고 로그 파일이 생성되는지 확인해 보세요.

    * * * * * /usr/bin/php /var/www/html/index.php common.cron >> /tmp/queue.log 2>&1

  • 2024.10.25 02:38 #1842803
    아, /usr/bin/php라고 절대경로를 입력해야 하는군요.
    우분투 서버 대부분 비슷한 세팅일 테니 매뉴얼에 반영해야겠습니다.
    꼼꼼하게 테스트해 주셔서 감사합니다.^^

    크론탭 대신 systemd timer를 사용하면 로그 파일을 따로 신경쓸 필요가 없어서 좋더군요.
    출력 내용이나 에러를 모두 systemctl status로 확인할 수 있으니...
  • 2024.10.25 02:48 #1842811

    감사합니다.

    저의 경우는 아래 php 두가지 경로 모두 정상작동 되는 부분 확인 했습니다.

    111111111111111111.png

  • 2024.10.25 04:32 #1842824
    위의 경우는 서버를 수정할 수 있어야 가능할 것 같군요.
    호스팅을 사용하는 사람은 어떤 다른 방법이 있을까요?
  • 2024.10.25 06:10 #1842834

    외부의 웹크론 서비스를 이용할 수 있습니다.

    자세한 방법은 시스템 설정 → 비동기 작업 탭을 참고하세요.

  • 2024.10.25 12:33 #1842868
    에러는 안 뜨고 딜레이도 생기지 않는데 메일이 안 오네요
  • 2024.10.25 12:43 #1842874

    웹크론 호출은 정상적으로 되고 있나요? (접속로그)
    웹크론 호출시 에러 나지는 않나요? (에러로그)

    웹크론 서비스가 미덥지 못하다면 웹크론 주소를 직접 새로고침하면서라도 테스트해볼 수 있지만,
    서버든 웹호스팅이든 기본적인 로그 없이는 문제를 해결하기 어렵습니다.

  • 2024.10.25 13:02 #1842883
    한참 로딩되다가 빈화면만 출력되네요
  • 2024.10.25 14:12 #1842898
    빈 화면은 정상입니다.
    빈 화면이 출력되는데 메일이 발송되지 않는다면
    라이믹스의 메일 발송 기록이나 서버의 에러 로그에 그 이유가 나오겠지요.
  • 2024.10.25 23:29 #1842957
    웹크론 호출을 처음 한번만 해주면 되나요
    아님 주기적으로 실행을 해 주어야 하나요
    어제 테스트한 글이 메일 발송 기록에 나타나질 않아서 웹크론 호출을 한번 해 주고 나니 나타나네요
  • 2024.10.26 01:30 #1842966
    1분 주기로 계속 호출해 줘야 합니다. 이걸 자동으로 해주는 것이 웹크론이지요.
    웹호스팅은 서버에서 뭔가가 꾸준히 돌아가도록 할 수 없으니까요.

    문제는 대부분의 웹크론 서비스가 해외 업체여서
    국내 웹호스팅을 쓰면 차단되기 십상이고, 클라우드플레어에 막히기도 합니다.
    이래저래 웹호스팅 사용자는 좋은 기능 쓰기가 쉽지 않아요.. ㅠ
  • 2024.10.26 01:37 #1842970
    답변 감사합니다.
    웹호스팅에서는 거의 사용이 힘드네요ㅠㅠ
    그리고 1분 주기로 자동으로 호출한다고 해도 호출하는 동안 홈피가 중단되는 현상이 있겠네요.
  • 2024.10.26 02:09 #1842978
    웬만큼 열악한 호스팅이 아닌 이상, 1분 주기로 호출한다고 홈페이지가 중단되지는 않습니다.
    호출한 당사자에게만 세션 락이 걸리지요.