【问题标题】:Google Cloud Spanner Slow ( over 800 ms ) connection even using cache pool即使使用缓存池,Google Cloud Spanner 连接速度也很慢(超过 800 毫秒)
【发布时间】:2021-04-14 21:25:53
【问题描述】:

我的公司正在考虑将我们的数据库迁移到多租户架构中的 Cloud Spanner,但是在我们完成第一次测试之后,我们担心我们得到的性能。

有什么想法可以改进下面的代码吗?我们做错了吗?

        $cache = new SysVCacheItemPool();
        $sessionPool = new CacheSessionPool(
            $cache, [
                'minSessions' => 10,
                'maxSessions' => 10
            ]
        );
        $client = new SpannerClient([
            'projectId' => 'XXX'
            'keyFilePath' => __DIR__ . '/../config/CloudSpanner/XXX.json',
            'authCache' => $cache
        ]);
        $instance = $client->instance('XXX');
        $database = $instance->database('XXX', [ 'sessionPool' => $sessionPool ]);
        $results = $database->execute('SELECT "Hello World" as test')

        foreach ($results as $row) {
          print($row['test'] . PHP_EOL);
        }

【问题讨论】:

    标签: php google-cloud-spanner


    【解决方案1】:

    有几件事情浮现在脑海中,这可能会增加您的操作延迟。

    扳手配置

    您正在测试的实例是否有任何其他负载?您可以在 Spanner 实例的监控选项卡中进行检查。确保单区域实例配置的 CPU 不超过 65% (https://cloud.google.com/spanner/docs/cpu-utilization#recommended-max)。我认为这可能与您的问题无关,因为您只是对其进行测试,但我认为值得一提。

    客户位置

    您是在本地机器上而不是在 GCP 环境中执行代码吗?这可能会显着导致您看到的延迟,尤其是如果您的 Spanner 服务器位于远离客户端的区域内。确保您尝试使这两个尽可能接近。我还将通过在 GCP 基础架构中部署代码来测试您的代码,这样您就可以比较您观察到的延迟并排除与网络相关的问题。

    会话

    我看到您已将会话池配置为最少和最多 10 个会话。这意味着您最多可以同时执行 10 个事务。如果您要对多个操作进行基准测试,请确保配置会话池以符合您的需求。除此之外,我们通常建议每个 gRPC 通道最多 100 个会话,因此您可能还必须增加这个数字。请注意,我一开始不会增加这些数字,因为与维护会话池相关的成本会随着更多会话的添加而增加。我会尝试前面提到的其他方法。

    性能测量

    出于好奇,您究竟在哪里衡量性能?是从客户端创建到查询执行结束吗?还是您只测量查询执行? 如果可能,您可以只创建一次客户端并将其重新用于所有查询。

    【讨论】:

    • 是的,我正在本地机器上进行测试,所以如果我不使用 GCP 来部署我的应用程序,我会有这个响应时间吗?我正在使用 AB 基准工具从客户端创建到查询执行结束进行测量,但我尝试了它,并且一旦我只迭代结果,响应时间就会急剧增加,如果我从不迭代它,我会得到大约 100 毫秒。
    • 如果您离您的 Spanner 实例更近,您肯定会获得更好的响应时间。您是否在靠近本地计算机的区域中创建了 Spanner 实例?关于基准测试,您可以创建一次客户端,其会话池大小接近您想要执行的请求数量,并分别测量执行与客户端创建。如果您的执行时间随着您的迭代而增加,那么在我看来,您正在发生某种资源争用。也许您的 Spanner 实例上的 CPU 较高或您的会话池太小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2021-06-04
    • 2013-11-10
    相关资源
    最近更新 更多