我一直在努力优化分析社交图数据的代码(有很多帮助来自https://blog.golang.org/profiling-go-programs),我已经成功地重做了很多慢速代码.
所有数据首先从db加载到内存中,并从那里进行数据分析显示CPU限制(最大内存消耗<10MB,CPU1 @ 100%)
但是现在我程序的大部分时间似乎都在runtime.osyield和runtime.usleep中.有什么方法可以防止这种情况发生?
我已经设置了GOMAXPROCS = 1,并且代码不会产生任何goroutine(除了golang库可能调用的内容).
这是我从pprof输出的top10
(pprof) top10
62550ms of 72360ms total (86.44%)
Dropped 208 nodes (cum <= 361.80ms)
Showing top 10 nodes out of 77 (cum >= 1040ms)
flat flat% sum% cum cum%
20760ms 28.69% 28.69% 20850ms 28.81% runtime.osyield
14070ms 19.44% 48.13% 14080ms 19.46% runtime.usleep
11740ms 16.22% 64.36% 23100ms 31.92% _/C_/code/sc_proto/cloudgraph.(*Graph).LeafProb
6170ms 8.53% 72.89% 6170ms 8.53% runtime.memmove
4740ms 6.55% 79.44% 10660ms 14.73% runtime.typedslicecopy
2040ms 2.82% 82.26% 2040ms 2.82% _/C_/code/sc_proto.mAvg
890ms 1.23% 83.49% 1590ms 2.20% …Run Code Online (Sandbox Code Playgroud) 我遇到了这个问题,试图回答这个问题:在提供 有关如何在app.yaml中为Google App Engine路由某些请求的PHP文件时删除PHP文件扩展名.
但我无法弄清楚如何映射URL的请求,这些URL可能有也可能没有带有单个app.yaml正则表达式的尾部斜杠.现在,我用两行来处理这个案子:
handlers:
- url: /(.*)/
script: /\1.php
- url: /(.*)
script: /\1.php
Run Code Online (Sandbox Code Playgroud)
但这似乎是多余的.这两条线可以组合成一条吗?
我认为应该工作的东西,比如
url: /(.*)(/?)
Run Code Online (Sandbox Code Playgroud)
和
url: /(.*)(/{0,1})
Run Code Online (Sandbox Code Playgroud)
和
url: /(.*)(/?$)
Run Code Online (Sandbox Code Playgroud)
似乎不适用于带有斜杠的请求.
我试图在其父级内部垂直和水平居中.
JSFIDDLE:http://jsfiddle.net/pE5QT/
CSS:
.parent {
width: 200px;
height: 200px;
background-color:red;
}
.child {
height: 100px;
width: 100px;
background-color:yellow;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div class="parent"> b
<div class="child"> a </div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
var parent = $('.parent');
var parentDimensions = parent.height() * parent.width();
var child = $('.child');
var childDimensions = child.height() * child.width();
parent.html();
child.html(childDimensions);
Run Code Online (Sandbox Code Playgroud)
我很乐意回答,但我也很想理解它背后的逻辑.
有没有办法将应用引擎中的日志加载到Google Cloud Platform上的BigQuery?
我正在尝试使用联合查询来加载云存储中的Stackdriver日志文件.但是BigQuery无法加载Stackdriver编写的一些字段名称.
日志文件是换行符分隔的JSON,其记录看起来像
{
"insertId":"j594356785jpk",
"labels":{
"appengine.googleapis.com/instance_name":"aef-my-instance-20180204t220251-x59f",
"compute.googleapis.com/resource_id":"99999999999999999",
"compute.googleapis.com/resource_name":"c3453465db",
"compute.googleapis.com/zone":"us-central1-f"
},
"logName":"projects/my-project/logs/appengine.googleapis.com%2Fstdout",
"receiveTimestamp":"2018-02-08T02:59:59.972739505Z",
"resource":{
"labels":{
"module_id":"my-instance",
"project_id":"my-project",
"version_id":"20180204t220251"
},
"type":"gae_app"
},
"textPayload":"{\"json\":\"blob\"}\n",
"timestamp":"2018-02-08T02:59:54Z"
}
Run Code Online (Sandbox Code Playgroud)
但BigQuery在此输入上返回错误: query: Invalid field name "compute.googleapis.com/zone". Fields must contain only letters, numbers, and underscores, start with a letter or underscore, and be at most 128 characters long.
有没有办法将这种日志摄入BigQuery?
我特别感兴趣的是只提取textPayload字段.
google-app-engine etl google-bigquery google-cloud-platform stackdriver
app.yaml ×1
centering ×1
etl ×1
go ×1
html ×1
javascript ×1
jquery ×1
optimization ×1
pprof ×1
regex ×1
stackdriver ×1