-
2016/01/06 1:26 오전 #29576
안녕하세요.
오늘 아침에 회사 홈페이지가 10여분간 접속이 되지 않았습니다.
Error establishing a database connection
이라는 메시지가 화면에 표시가 되었구요, 호스팅업체에 확인해 보니 DB가 잠깐 동안 죽었더라구요. 그래서 Mysql 로그를 받아서 살펴보았는데, 접속할 때마다 wp_options 테이블에 autoload가 ‘yes’인것을 다 읽어오더라구요. 그래서 불필요한 레코드들을 좀 지워봤습니다.
더 살펴보다 보니까 워드프레스 고유주소값을 테이블에 계속 업데이트 하고 있네요.
INSERT INTO
wp_options
(option_name
,option_value
,autoload
) VALUES (‘rewrite_rules’, ‘a:101:{s:56:\”archives/category/(.+?)/. . . . 중략… e=$matches[2]\”;}’, ‘yes’) ON DUPLICATE KEY UPDATE
option_name
= VALUES(option_name
),option_value
= VALUES(option_value
),autoload
= VALUES(autoload
);이런식으로 업데이트를 시키고 있더라구요.
permalink값을 .htaccess에 대충 정해놓아도 실제로 DB(wp_options)에 저장해서 사용한다는 것을 구글에서 찾아보다가 외국사이트들을 보고 오늘 알았네요.
내용은 이해했는데, 그런데 왜 계속 그 값을 wp_options 테이블에 업데이트 하고 있는지 모르겠습니다. 한번만 가지고 있으면 되는 거 아닌가요.
2016/01/06 2:25 오전 #29577두 가지 케이스가 있을 거 같습니다.
1> 플러그인이나 테마에서 add_rewrite_rule() 로 rewrite rule 을 추가한 다음, flush_rewrite_rules() 호출
2> wp_options 테이블에 락이 걸려서 insert 가 되지 않아 계속 insert 를 시도
show processlist 해서 혹시 2)와 같이 wp_options 테이블에 락을 계속 걸고 있는 게 있는지 확인해보고, 없으면 테마, 플러그인 중 flush_rewrite_rules() 호출하는 걸 찾아보면 될 듯 합니다.
2016/01/06 3:53 오후 #29584항상 잘 되다가 ‘어느날 갑자기’ 가 문제인데요,
‘갑자기’의 원인은 항상 존재하더군요.
- 플러그인을 새로 설치했다거나
- 어떤 설정값을 새로 고쳤다거나
- 서버에 어떠한 작업을 했다거나
일단… wp_options 에서 autoload => yes 로 되어있는 것들은 이 문제와 상관없으니 그냥 원래대로 되돌리시는게 좋을 테구요(아마도… 코어를 수정하셨을듯…)
반복적으로 요청된다고 말씀하신 SQL구문은… 조금 이상한게 UPDATE 가 아니라 INSERT 라는 점인데요. 그래서 ‘DUPLICATE KEY UPDATE’ 에러가 발생하는 것이구요.
또한 단일 row를 insert 하는 구문이 아니라 INSERT INTO ….. VALUES…. 와 같이 dump 방식의 코드를 쓰고 있는것도 워드프레스 DB API 를 이용하지 않는 방식으로 보입니다. 어떤 스크립트에서 저 작업을 진행하는지 한 번 찾아보시는게 좋을 것 같네요.
2016/01/07 1:12 오전 #29590add_option() 함수에서 insert into wp_options ~~ on duplicate key update ~~ 와 같은 SQL 문을 사용합니다. 플러그인이나 테마에서 add_option(‘rewrite_rules’, ~~) 를 실행하지 않나 싶군요.
2016/01/07 1:44 오전 #29591add_option 함수 내용은 2.x대 이후에 볼 일이 없었는데 그렇게 바뀌었었군요 🙂
-
AuthorPosts
- 답변은 로그인 후 가능합니다.