2014-04-24 3 views
3

CloudSQL 백엔드에 연결할 때 개발과 제작 간의 대기 시간에 큰 차이가 있습니다. 기대했던 것보다 훨씬 많은 것입니다. 양호한 샘플링을 얻기 위해, I는 각 행의 크기를 20 배 페치 I 125, 250, 500, 1000, 2000 행 페치Google Appengine이 CloudSQL에 연결하는 속도가 느린 이유

  1. (행 크기 약 30 바이트)
  2. :

    는 I 테스트를 실행 시간의

시험은 세 가지 환경에서 실행되었습니다

  1. 호스팅에서 appengine
  2. 개발 로컬 모드 만
  3. 개발 모드 로컬 고정 IP를 통해 CloudSQL에 연결하고 결과를 볼 수 MySQL의
  4. 여기

을 실행하는 로컬 VM에 연결 : 지금은 기대 Graph of results

을 50ms-200ms 정도의 속도 변화가 있지만 3-4 이 약간 높습니다.

나는 appengine을 처음 사용 했으므로이 문제를 일으킬 수있는 새의 실수가 있습니까? 아니면 다른 제안? Appengine의 코드에서 프로파일 러를 실행했는데 _apiProxy.Event에 대한 호출이 있습니다. 적어도 500ms는 걸리며, 750ms 이상은 올라가지 않았습니다. 실행 시간이 길었습니다. 궁극적으로 추가되는 짧은 실행중인 전화 번호가 많지만 튜닝해야 할 루프가있는 것과 같지 않습니다.

미리 감사드립니다.

+1

prod에서 Cloud SQL에 어떻게 연결하고 있습니까? 네이티브 드라이버를 사용하고 있습니까? 오래된, 더 이상 사용되지 않는, 연결 방법은 느렸다 (특히 Python에서). :-( 설정된 연결에서 'SELECT 1'의 왕복 시간은 2ms 미만이어야합니다. –

+0

http : //docs.sqlalchemy에서 설명한대로 후드에서 mysqldb를 사용하는 sqlalchemy를 사용하여 연결하고 있습니다. .org/ko/rel_0_9/dialects/mysql.html # module-sqlalchemy.dialects.mysql.gaerdbms. "SELECT 1"을 수행하는 데 걸리는 시간을 확인합니다. – Myles

답변

1

먼저 사용중인 연결 경로를 확인하십시오. connecting via the latest documented method입니까? 클라우드 SQL은 연결 경로가 더 느리며 이제는 더 이상 사용되지 않지만 여전히 작동하고 있으므로이를 통해 액세스 할 수 있습니다.

둘째, 동일한 위치에 App Engine 앱과 Cloud SQL 인스턴스가 있습니까? Cloud SQL 설정의 '기본 위치'가 연결중인 앱 엔진 앱을 따르도록 설정되어 있는지 확인합니다.

마지막으로 데이터를 로컬로 연결 했으므로 가능성이 희박합니다. 데이터베이스 연결을 다시 사용하고 있는지 확인하십시오. 새 연결을 만들면 비용이 많이 듭니다. 앱이 로컬에서 연결을 재사용하고 App Engine에서 새 연결을 만드는 데는 몇 가지 이유가있는 경우 이러한 동작이 발생할 수 있습니다. 하지만 제가 말했듯이, 이것은 거의 보이지 않습니다.

+0

SqlAlchemy를 사용하여 연결하고 있습니다. 여기서는 http://docs.sqlalchemy.org/en/rel_0_9/dialects/mysql.html#module-sqlalchemy.dialects.mysql.gaerdbms에 설명 된 바와 같이 mysqldb를 사용하고있다. 잘못된. local/cloudsql 테스트에서 정적 IP에 곧바로 연결했지만, 프로덕션에서는 instancename 메서드를 사용하고 있습니다. IP를 가리키고 그 점이 차이점이 있는지 살펴 보겠습니다. 또한 기본 위치 옵션을 사용하고 있습니다. 사용되지 않는 메소드의 예가 있습니까? 그래서 나는 그것을 확인할 수 있습니까? – Myles

+0

소스를 살펴보면 sqlalchemy가 두 번째 항목 (https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/rdbms_mysqldb.py?r=277)을 사용하고 있습니다. (https://developers.google.com/appengine/docs/python/cloud-sql/) – Myles

+1

App Engine에서는/cloudsql/unix 소켓을 사용하여 더 나은 성능을 얻을 수 있습니다. App Engine에서 IP 연결을 원한다면 Connector/Python을 사용할 수 있습니다 (현재는 MySQLdb가 작동하지 않습니다). –