为什么欧洲 - 西部比Google Cloud Platform的AppEngine中心慢得多?

时间:2017-08-23 17:04:25

标签: google-app-engine google-cloud-platform

我做了一个实验,并在Google云端平台上安装了相同的应用程序,使用相同的数据库,并在2个不同的位置安装相同的存储桶(用于图像):us-central和europe-west。但是,加载时间差别很大。我在西班牙,令人惊讶的是,我们中心的人要快得多。

申请信息:

  • 地区:us-central VS europe-west
  • PHP 5.5

SQL(两者都相同):

  • MySQL First Generation master
  • MySQL 5.6
  • tier:D1
  • 激活政策:按需
  • 首选位置:关注应用

存储(Google存储桶):

  • 默认存储类:多区域
  • 地点:欧盟(欧洲西部)和美国(中央)(

加载时间(在缓存后进行一些刷新):

欧洲西部的那个太慢,不实用。为何如此区别?或者我在这里配置错误了什么?在配置中我还应该注意什么,以使欧洲 - 西部像我们中心一样快速运行?

1 个答案:

答案 0 :(得分:1)

好的,所以与Google支持小组讨论,我发现确实存在加载差异,但这并不是因为服务器速度较慢。

差异来自对CloudStorageTools API的调用,即@Override public void start(Stage stage) { ObservableList<PieChart.Data> data = FXCollections.observableArrayList(); PieChart pieChart = new PieChart(data); PieChart.Data one = new PieChart.Data("one", 50.0); PieChart.Data two = new PieChart.Data("two", 33.0); PieChart.Data three = new PieChart.Data("three", 17.0); data.addAll(one, two, three); one.getNode().addEventFilter(MouseEvent.MOUSE_PRESSED, mouseEvent -> { ScaleTransition st = new ScaleTransition(Duration.millis(1500),one.getNode()); st.setByX(0.3); st.setByY(0.3); st.setCycleCount(1); st.setAutoReverse(false); st.play(); }); two.getNode().addEventFilter(MouseEvent.MOUSE_PRESSED, mouseEvent -> { ScaleTransition st = new ScaleTransition(Duration.millis(1500),two.getNode()); st.setByX(0.3); st.setByY(0.3); st.setCycleCount(1); st.setAutoReverse(false); st.play(); }); three.getNode().addEventFilter(MouseEvent.MOUSE_PRESSED, mouseEvent -> { ScaleTransition st = new ScaleTransition(Duration.millis(1500),three.getNode()); st.setByX(0.3); st.setByY(0.3); st.setCycleCount(1); st.setAutoReverse(false); st.play(); }); //create root group Group root = new Group(); //set up window //add nodes to root root.getChildren().addAll(pieChart); Scene scene = new Scene(root, 500,500); stage.setTitle("Testing arc animation"); stage.setScene(scene); stage.show(); } 。从欧洲访问API比每次呼叫从美国服务器慢约100毫秒到约200毫秒。由于我平均每次拨打15个电话,这导致每页加载时间明显不同。

我的解决方案是在映像创建时缓存对CloudStorageTools.getImageServingUrl()的调用,并将结果保存在数据库中。然后在显示图像时,只需从数据库加载Url并避免每次调用API。

Google支持部门确认,虽然没有记录,但欧洲和美国之间CloudStorageTools API访问时间的差异是预期的行为。