Amazon EC2에서 호스팅되는 Magento 웹 스토어를 호스팅하고 있지만 속도 문제가 발생하고 있습니다. 현재 다른 공급자로 전환하는 것을 고려하고 있습니다. 호스팅 제공업체를 찾았고 이제 테스트 계정이 생겼습니다. 속도는 비교적 좋은 편입니다. 그들은 memcached를 사용하는데, 서버에서 이것을 사용한다면 상황이 어떻게 개선될지 궁금합니다.
memcached가 데이터베이스 테이블을 캐시한다는 내용을 읽었지만 데이터베이스 서버가 아닌 웹 서버에 설치되어 있다는 것을 알고 있습니다.
Memcached를 사용하면 단점이나 위험이 있나요?
속도 향상 외에도 다른 응용 프로그램에 예상치 못한 영향을 미치게 됩니까? RAM은 어떻습니까? 제대로 작동하려면 더 많은 것이 필요합니까? 이제 우리는 1715MB의 RAM을 갖게 되었습니다(이상한 수치이지만 보고된 내용은 그 정도입니다).
답변1
컴퓨팅 노드나 네트워크 서버에 memcached를 설치하면 쿼리가 연결되기 전에 쿼리를 캐시할 수 있습니다. (예를 들어) PHP가 온라인에 접속하기 전에 풍부한 캐시에 액세스할 수 있다면 Apache 인스턴스가 더 빨라질 것입니다. 어쨌든 데이터베이스 상자의 여유 메모리를 데이터베이스 인스턴스에 할당하여 가능한 한 많은 메모리를 사용할 수 있도록 하고 메모리에 보관할 수 있는 만큼 버퍼링하는 것이 좋습니다.
물론 Memcached는 웹 서버의 메모리를 사용하므로 컴퓨팅/웹 노드가 스왑 공간을 독차지하지 않도록 과도하게 할당하고 싶지는 않습니다. 이렇게 하면 모든 공간 트레이드오프가 제거됩니다.
내 제한된 경험에 따르면 이것은 마법의 총알이 아닙니다. 그리고 다른 캐시나 기타 성능 조정 노력과 마찬가지로 조정하고 관찰해야 합니다. 데이터베이스당 여러 개의 네트워크 호스트가 있으면 더 좋아지지만 여전히 하나의 네트워크 상자와 하나의 데이터베이스 상자에 비해 몇 가지 멋진 개선 사항을 보여야 합니다. 아직 같은 상자에 데이터베이스와 네트워크를 설치하지 않았다고 말씀드리고 싶습니다. 그렇게 하려는 경우 다시 생각해 볼 수도 있습니다.
답변2
Memcached를 사용하면 단점이나 위험이 있나요?
예. 동시에 해당 웹사이트를 운영하는 다른 사용자와 컴퓨터를 공유하는 경우에는 사용하지 마세요. memcached 작동 방식의 핵심은 로컬 포트에서 수신 대기한다는 것입니다. 로컬 액세스 권한이 있는 사람은 누구나 memcached에 액세스할 수 있으며 여기에 저장된 모든 항목은 취약해집니다. 또한 memcached 포트가 인터넷에 연결되지 않도록 차단되어 있는지 확인해야 합니다.