这两天刚刚接触node.js,有业务会遇到。通过测试请求单个url,不同的文件大小对性能影响较大。使用strace -p pid -c 统计,futex 90%。后置api带宽没有跑起来,前置web 进程100%,AB测试性能很低。
通过node.js profile,得知性能主要在使用LazyCompile: *afterTransform _stream_transform.js:73:24。使用Transform Stream,阻塞向后置api的请求。
[C++]:
ticks total nonlib name
18218 48.3% 48.3% void node::Buffer::(anonymous namespace)::StringSlice<(node::encoding)1>(v8::FunctionCallbackInfo<v8::Value> const&)
2029 5.4% 5.4% __pthread_cond_signal
1979 5.2% 5.3% __memcpy_sse2_unaligned_erms
499 1.3% 1.3% v8::internal::IncrementalMarking::Step(unsigned long, v8::internal::IncrementalMarking::CompletionAction, v8::internal::IncrementalMarking::ForceCompletionAction, v8::internal::StepOrigin)
[Summary]:
ticks total nonlib name
5582 14.8% 14.8% JavaScript
31081 82.4% 82.5% C++
4545 12.1% 12.1% GC
8 0.0% Shared libraries
1028 2.7% Unaccounted
[C++ entry points]:
ticks cpp total name
19788 77.0% 52.5% v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*)
1958 7.6% 5.2% __pthread_cond_signal
1376 5.4% 3.6% v8::internal::Runtime_StringBuilderConcat(int, v8::internal::Object**, v8::internal::Isolate*)
467 1.8% 1.2% v8::internal::Builtin_ArrayBufferConstructor_ConstructStub(int, v8::internal::Object**, v8::internal::Isolate*)
[Bottom up (heavy) profile]:
Note: percentage shows a share of a particular caller in the total
amount of its parent calls.
Callers occupying less than 1.0% are not shown.
ticks parent name
18218 48.3% void node::Buffer::(anonymous namespace)::StringSlice<(node::encoding)1>(v8::FunctionCallbackInfo<v8::Value> const&)
18218 100.0% v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*)
18218 100.0% LazyCompile: ~stringSlice buffer.js:555:21
15147 83.1% LazyCompile: *Buffer.toString buffer.js:609:37
14753 97.4% LazyCompile: *StringDecoder.write string_decoder.js:70:41
14753 100.0% LazyCompile: *afterTransform _stream_transform.js:73:24
391 2.6% LazyCompile: ~utf8Text string_decoder.js:198:18
391 100.0% LazyCompile: ~StringDecoder.write string_decoder.js:70:41
2350 12.9% LazyCompile: *Strin