我有一个Web应用程序项目,其中的性能最重要,我可以选择使用的技术.
与Web应用程序无关的语言管理基准测试.
你认为什么是最合适的候选人?
谢谢!
一位朋友在IRC上建议使用gwan服务器.看起来像我在寻找,但我以前从未听说过.有这方面经验的人吗?易用性,可靠性?
在我离开Apache之前,我想了解你的想法.
除了令人印象深刻的基准,
有没有人真的使用G-WAN网络服务器?
(cource gwan.ch和trustleap.com除外)
目标:使用可执行文件中的函数(不导出符号)的共享库.
手段: gcc -Wl,--defsym,function=0x432238
该手册页指出:
"--defsym symbol=expression" Create a global symbol in the output
file, containing the absolute address given by expression.
Run Code Online (Sandbox Code Playgroud)
令我沮丧的dlopen()是0x7ffff676f000,将共享库的基地址(这是64位代码)添加到导出的"绝对符号地址":
executable shared library
---------- linker --------------
symbol: 0x432238 =====> 0x7ffff6ba1238
Run Code Online (Sandbox Code Playgroud)
objdump 0x432238在库中显示正确的符号地址(),但一旦加载dlopen(),符号就有地址0x7ffff6ba1238.
如果,一旦加载,我手动将库符号修补到正确的地址,然后一切正常(否则,库SEGFAULTs).
更新:
我对以下答复的技术相关性提出质疑,并且更多的是"更新":
使用--defsym在PIC库/可执行文件中定义重定位符号是没有意义的(除了在没有任何可用功能的情况下污染二进制文件之外,它不起任何作用).
因此,PIC共享库或PIC可执行文件中--defsym的唯一相关用法应该是定义(非重定位)"绝对地址".
顺便说一句,如果您懒得阅读手册页,这是--defsym的官方目的:
"在输出文件中创建一个全局符号,其中包含absolute address给定的表达式."
充其量,这是一个Linux链接器的影响,这将是微不足道的修复.对于那些不能等待拒绝人员实现(并修复)他们的错误的人来说,解决方案是在缺陷链接器加载二进制映像之后修补重定位表.
然后,-defsym在PIC库/可执行文件中变得很有用,在我看来这是一个值得欢迎的进展.
在Ubuntu 12.04 LTS下使用gwan_linux64-bit.tar.bz2拆包并运行gwan
然后指向wrk(使用null文件null.html)
wrk --timeout 10 -t 2 -c 100 -d20s http://127.0.0.1:8080/null.html
Running 20s test @ http://127.0.0.1:8080/null.html
2 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 11.65s 5.10s 13.89s 83.91%
Req/Sec 3.33k 3.65k 12.33k 75.19%
125067 requests in 20.01s, 32.08MB read
Socket errors: connect 0, read 37, write 0, timeout 49
Requests/sec: 6251.46
Transfer/sec: 1.60MB
Run Code Online (Sandbox Code Playgroud)
..性能非常差,实际上似乎存在某种巨大的延迟问题.在测试期间,gwan有200%的忙碌,而wrk有67%的忙碌.
指向nginx,wrk忙碌200%,nginx忙碌45%:
wrk --timeout 10 -t 2 -c 100 -d20s http://127.0.0.1/null.html
Thread Stats Avg Stdev Max +/- Stdev
Latency 371.81us …Run Code Online (Sandbox Code Playgroud) 我希望能够预编译用C编写的GWAN应用程序,因为我不想在客户的服务器上部署我的源代码.
我已经阅读了文档,但没有提到如何执行此操作.这甚至可能吗?
我想一个想法是在库中创建我的功能并链接到我的GWAN脚本中的功能.这是最好的方式吗?
如果函数是: 可以void memcpy(char* dst, const char* src, size_t size)吗?
在 memcpy() 中使用 void 指针有什么好处?
Go编译器抱怨未使用的变量和导入.因此,如果检测到任何未使用的var /脚本,则无法在gwan中运行脚本.
如果运行,gwan在这种情况下会提供404错误...或者根本无法启动
有办法避免这种行为吗?
我们现在使用这台服务器差不多一年了.
上次论坛帖子见于2011年11月.上次服务器版本发布于28/03/12.
只是想知道是否有人知道公司内部发生了什么?我们应该期待什么,还是应该开始寻找其他选择?