2016-06-04 3 views
0

수천 명의 클라이언트가 여러 번 요청한 웹 사이트가 자주 있습니다. 내 서버를 무한대로 확장 할 수 없으며 현재 상태의 응용 프로그램은 트래픽을 처리 할 수 ​​없습니다. 더 나은 안락함을 위해서 먼저 트랜잭션을 시작한 클라이언트가 트랜잭션을 완료하도록하고 나중에 다른 클라이언트가 트랜잭션을 시작할 수 있도록하고 싶습니다. HTTP 요청을 두 그룹으로 나누는 방법을 찾고 있는데, 트랜잭션을 완료 할 수있는 첫 번째 요청과 503 서버 사용량이 많은 웹 페이지를 수신해야하는 요청입니다.쿠키가없는 요청에 대해서만 서버를 사용 중으로 표시합니다.

일부 트랜잭션을 동시에 처리 할 수 ​​있습니다. 서버 바쁜 웹 페이지로 잠시 동안 갖고 싶은 나머지 트랜잭션. 나는 그것에 광택을 사용할 수 있다고 생각했습니다. 버드 나는 그것을 위해 VCL에서 올바른 조건을 생각할 수 없다.

나는 바니시에서 현재 백엔드 연결 수를 찾고 싶습니다. 현재 연결 수가 일부 값 (예 : 100)보다 높고 요청에 세션 쿠키가없는 경우 응답은 503 서버 사용 중입니다. 연결 수가 100보다 클 경우에도 세션 쿠키가 있으면 요청이 백엔드로 전달됩니다.

AFAIK in Varnish VCL 나는 참/거짓이어야하는 백엔드 (감독)의 건강 상태 만 얻을 수 있습니다. 그러나 백엔드가 건강하지 않은 것으로 간주되면 요청이 전달되지 않습니다. 백엔드에 max_connections를 사용하면 한계까지 모든 연결에 503 오류가 발생합니다.

광택, ngingx, apache 또는 다른 도구로이 동작을 유지하는 방법이 있습니까?

답변

0

콘텐츠가 무엇이든 상관없이 동적이어야합니까? 3 ~ 4 백만 건의 고유 한 사이트를 처리하고 무효화를 처리하는 유예 모드와 같은 기능을 사용하는 사이트를 운영합니다.

또 다른 옵션은 동적이지 않은 모든 것을 캐싱하여로드를 줄이는 데 도움이되는 ESI, Edge Side Includes 일 수 있습니다.

+0

티켓 판매 웹 사이트 - 많은 동시 요청이 짧은 시간에 있습니다. 응용 프로그램 논리는 주로 SQL 프로 시저로 작성됩니다. 예, 캐싱해야 할 부분이 있지만 사용자가 시트를 선택할 때 가능한 한 원활하게 처리해야합니다. 인프라 및 응용 프로그램은 순조롭게 불과 수백 (아마도 1000) 개의 동시 요청을 처리 할 수 ​​있으므로 솔루션을 찾고 있는데, 짧은 시간 동안 일부 클라이언트를 보유하는 방법은 503 Server busy page입니다. – adrive

관련 문제