我刚刚实现了G-WAN Web服务器并测试了我的代码,但是,我的服务器响应速度非常快(20 ms),有时超过几秒钟(6-7 s)甚至超时...
我尝试简化代码,并将字符串返回给客户端,问题仍然存在...... 除此之外,我已经记录了我的代码消耗的时间,它从未超过1秒,所以导致问题的原因是什么?!
我猜这个原因是网络延迟,并测试同一台服务器的网络速度,它非常快,任何想法? (问题是否包括像MySQL这样的第三方库?)这是我的G-WAN日志:
*------------------------------------------------
*G-WAN 4.3.14 64-bit (Mar 14 2013 07:33:12)
* ------------------------------------------------
* Local Time: Mon, 29 Jul 2013 10:09:05 GMT+8
* RAM: (918.46 MiB free + 0 shared + 222.81 MiB buffers) / 1.10 GiB total
* Physical Pages: 918.46 MiB / 1.10 GiB
* DISK: 3.27 GiB free / 6.46 GiB total
* Filesystem Type Size Used Avail Use% Mounted on
* /dev/mapper/vg_centos6-root
* ext4 6.5G 3.2G 3.0G 52% /
* tmpfs tmpfs 1004M 8.2M 995M 1% /dev/shm
* /dev/xvda1 ext4 485M 129M 331M 28% /boot
* 105 processes, including pid:10874 '/opt/gwan/gwan'
* Page-size:4,096 Child-max:65,535 Stream-max:16
* CPU: 1x Intel(R) Xeon(R) CPU E5506 @ 2.13GHz
* 0 id: 0 0
* Cores: possible:0-14 present:0 online:0
* L1d cache: 32K line:64 0
* L1i cache: 32K line:64 0
* L2 cache: 256K line:64 0
* L3 cache: 4096K line:64 0
* NUMA node #1 0
* CPU(s):1, Core(s)/CPU:0, Thread(s)/Core:2
* Bogomips: 4,256.14
* Hypervisor: XenVMMXenVMM
* using 1 workers 0[1]0
* among 2 threads 0[]1
* 64-bit little-endian (least significant byte first)
* CentOS release 6.3 (Final) (3.5.5-1.) 64-bit
* user: root (uid:0), group: root (uid:0)
* system fd_max: 65,535
* program fd_max: 65,535
* updated fd_max: 500,000
* Available network interfaces (3):
* 127.0.0.1
* 192.168.0.1
* xxx.xxx.xxx.xxx
* memory footprint: 1.39 MiB.
* Host /opt/gwan/0.0.0.0_8080/#0.0.0.0
* loaded index.c 3.46 MiB MD5:afb6c263-791c706a-598cc77b-e0873517
* memory footprint: 3.40 MiB.
答案 0 :(得分:0)
如果我使用-g模式,并增加工作人员数量达到服务器的CPU数量,这个问题似乎得到解决
然后,它似乎是一个CPU检测问题。请转储你的gwan.log文件头的相关部分(CPU检测),以便ew可以看看。
当G-WAN必须使用必须搜索和链接的外部图书馆重新编译servlet时,这可能需要一些时间(特别是如果只有一个工作者和其他请求待处理的话)。
更新:关注你的gwan.log文件转储,这是重要的:
CPU: 1x Intel(R) Xeon(R) CPU E5506 @ 2.13GHz
0 id: 0 0
Cores: possible:0-14 present:0 online:0
CPU(s):1, Core(s)/CPU:0, Thread(s)/Core:2
Hypervisor: XenVMMXenVMM
using 1 workers 0[1]0
among 2 threads 0[]1
英特尔E5506是一款4核CPU ......但是Xen Hypervisor
报告1个CPU和 0核(并且启用了超线程,没有任何CPU核心这没有意义)
为什么Xen
认为优先破坏关于CPU的真实和正确的信息完全无稽之谈超出了本次讨论的目的。
我只能说,这就是“moriya”所遇到的问题的原因。 (因此修复了./gwan -g -w 4
,以绕过损坏的Linux内核/proc
和CPUID
指令报告的错误信息。
我只能建议避免使用脑损坏的虚拟机管理程序来阻止多核软件(如G-WAN)通过破坏检测CPU拓扑的两种标准方法来正确运行:Linux内核/ proc结构和CPUID指令。 / p>