게시판 관리자 메일 등록 후 글등록 시 딜레이 현상에 관해 문의드립니다.
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
게시판 관리 > 고급 설정 > 관리자 메일 등록 후 글이나 댓글이 등록 될 때 등록한 이메일로 메일을 받으려고 합니다. 이메일 설정은 다음(daum) smtp로 설정 후 정상작동되는것 까지 확인 했습니다.
문제는 테스트로 게시판에 간단한 글 작성 후 글등록을 누르면 1~2초 정도 딜레이 된 다음 글 등록이 완료되는 증상이 있습니다. 같은 게시판에서 관리자 메일을 등록하지 않으면 평소처럼 곧바로 글 등록이 완료되구요.
추정컨대 매일 발송 과정을 거친 이후에 글 등록 과정이 완료되는것 같은데요.
다음(daum) smtp만의 문제인지 게시판 글 댓글 등록 시 이메일로 받으시는 분들은 혹시 같은 증상이 재현되시거나 아니면 다른 방법으로 글 댓글 등록 시 이메일로 받으시는 분들의 조언 부탁드립니다.
[ 내용추가 ]
시스템 설정> 비동기 작업 은 이런 경우에도 효과가 있는 방법일까요? 있다면 가상서버는 아래 내용 중 crontab 하나만 처리하면 되는 부분인지 문의드립니다.
마트몬
Lv. 8
댓글 25
메일 발송하는 데 은근히 오래 걸립니다.
특히 SMTP는 패킷이 여러 번 왔다갔다하는 방식이라 더 오래 걸립니다.
이럴 때 활용하라고 있는 것이 비동기 작업 기능이죠.
안내대로 설정하셔서 메일 발송과 빠른 응답속도라는 두 마리 토끼를 다 잡아 보시기 바랍니다.^^
단, 일반적인 우분투 서버에서 www-data 계정으로 직접 로그인할 수는 없으니,
root 권한으로 crontab -e -u www-data 명령을 사용하여
www-data 계정의 크론탭을 대리작성(?)하는 꼼수가 필요할 것 같습니다.
알려주신 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.
2.
3.
4. 글 작성 후 등록 버튼 클릭 시 아래 오류 메시지창이 뜨고 확인을 누르면 글 등록화면 상태이지만 게시판 목록으로 이동하면 이미 글 등록은 되어 있는 상태입니다.
5.
6. 현 서버의 max_execution_time은 30초로 설정되어 있습니다.
7. 설정한 경로에 에러로그 queue.log 는 따로 보이질 않습니다.어떤 부분을 다시 한번 체크해봐야 할런지 조언 부탁드립니다.
이건 코어에서 수정해야겠네요.
systemd timer 가이드에 안내된 대로 설정 후 테스트를 해봐도 같은 에러메시지가 발생하고 하더군요.
common/framework/drivers/mail 폴더에 있는 파일들만 다시 업로드해 보셔도 됩니다.
감사합니다. 시도 해 본 결과입니다.
1. common/framework/drivers/mail 폴더에 있는 파일들만 다시 업로드
2. www-data 계정으로 크론탭 작성
3. 비동기 작업 사용 체크
4. 게시판 글등록 시 -> 이전에 발생했던 딜레이나 아래 서버 오류 없이 정상 글 등록
5. 관리자 메일로 1분 지난 뒤 확인 해보면 메일이 발송되지 않고 메일, SMS 및 푸시 알림 관리 모듈>메일발송내역에도 내역이 존재하지 않습니다.
이 상태에서 메일, SMS 및 푸시 알림 관리 모듈> 메일 테스트 ( 하단 정상발송되었습니다. 문구 표시 ) > 1분이 지난 뒤 메일 발송내역을 보면 발송내역이 없습니다.
6. 비동기 작업 사용 체크 해제 > 메일, SMS 및 푸시 알림 관리 모듈 > 메일 테스트 > 메일 발송 내역을 보면 정상 발송 내역이 존재하고 실제 메일을 확인 해보면 메일이 도착해 있습니다.
로그 파일이 아예 생성되지도 않았다면 크론탭이 제대로 돌아가지 않고 있거나, 권한 문제가 있는 것 같습니다.
/var/spool/cron/crontabs/www-data 파일의 권한을 말씀하시는거죠?
웹크론 방식 사용시 호출해야 할 주소를 브라우저에서 한 번 방문해 보시겠어요?
해결되었습니다. 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
우분투 서버 대부분 비슷한 세팅일 테니 매뉴얼에 반영해야겠습니다.
꼼꼼하게 테스트해 주셔서 감사합니다.^^
크론탭 대신 systemd timer를 사용하면 로그 파일을 따로 신경쓸 필요가 없어서 좋더군요.
출력 내용이나 에러를 모두 systemctl status로 확인할 수 있으니...
감사합니다.
저의 경우는 아래 php 두가지 경로 모두 정상작동 되는 부분 확인 했습니다.
호스팅을 사용하는 사람은 어떤 다른 방법이 있을까요?
외부의 웹크론 서비스를 이용할 수 있습니다.
자세한 방법은 시스템 설정 → 비동기 작업 탭을 참고하세요.
웹크론 호출은 정상적으로 되고 있나요? (접속로그)
웹크론 호출시 에러 나지는 않나요? (에러로그)
웹크론 서비스가 미덥지 못하다면 웹크론 주소를 직접 새로고침하면서라도 테스트해볼 수 있지만,
서버든 웹호스팅이든 기본적인 로그 없이는 문제를 해결하기 어렵습니다.
빈 화면이 출력되는데 메일이 발송되지 않는다면
라이믹스의 메일 발송 기록이나 서버의 에러 로그에 그 이유가 나오겠지요.
아님 주기적으로 실행을 해 주어야 하나요
어제 테스트한 글이 메일 발송 기록에 나타나질 않아서 웹크론 호출을 한번 해 주고 나니 나타나네요
웹호스팅은 서버에서 뭔가가 꾸준히 돌아가도록 할 수 없으니까요.
문제는 대부분의 웹크론 서비스가 해외 업체여서
국내 웹호스팅을 쓰면 차단되기 십상이고, 클라우드플레어에 막히기도 합니다.
이래저래 웹호스팅 사용자는 좋은 기능 쓰기가 쉽지 않아요.. ㅠ
웹호스팅에서는 거의 사용이 힘드네요ㅠㅠ
그리고 1분 주기로 자동으로 호출한다고 해도 호출하는 동안 홈피가 중단되는 현상이 있겠네요.
호출한 당사자에게만 세션 락이 걸리지요.