环境
我们的 mongo 数据库托管在亚马逊 EC2 中。我们根据推荐的生产架构设置了服务器,如下:
我们目前正在对 3500 个并发用户的应用程序进行负载测试。我们的应用程序的消息传递(写入)量很大,因此我们目前正在尝试 2 个数据库,一个用于用户,另一个用于消息。当我们有单个数据库(用户、消息作为集合)时,平均响应时间为 2.3 秒,但错误率几乎为 0.00%。当我们有 2 个数据库时,其中一个包含用户,另一个包含消息,平均响应时间为 1.1 秒,但错误率更高 (0.16%)
当我们检查 tomcat(应用程序服务器日志)时,我们发现很多错误,如下所示:
~ 88% 的错误:
{ "serverUsed" : "localhost:27017" , "ok" : 1 , "n" : 0 , "err" : "write results unavailable from shard01-primary.mycompanys.com:27018 :: caused by :: Location13328 sharded connection pool: connect failed shard01-primary.mycompanys.com:27018 : couldn't connect …Run Code Online (Sandbox Code Playgroud) 抱歉,这是个愚蠢的问题,但我不得不问这个。我有一个运行数十亿次计算的程序,我正在努力让它运行得更快。在我的程序中,我声明了很多用于中间计算的变量。例如,在伪代码中:
public bool FunctionThatGetsCalledInMain(manyparameters)
{
for (int i = 0; i < 10000000; i++)
{
int x = bigFunctionThatReturnsAnInt(i,manyparameters)
double y = bigFunctionThatReturnsADouble(i,manyparameters)
string z = bigFunctionThatReturnsAString(i,manyparameters)
bool b = someFunctionOfXYZ(x,y,z)
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以通过执行以下操作来提高性能:
public bool FunctionThatGetsCalledInMain(manyparameters)
{
for (int i = 0; i < 10000000; i++)
{
bool b = someFunctionOfXYZ(bigFunctionThatReturnsAnInt(i,manyparameters),bigFunctionThatReturnsADouble(i,manyparameters),bigFunctionThatReturnsAString(i,manyparameters))
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这看起来很可怕,我的直觉告诉我这并不重要,但我只是想看看其他人是否同意。
是否可以使用 Jmeter 模拟在不同桌面浏览器及其版本中运行的负载?我知道通过使用“从 HTML 文件中检索所有嵌入式资源”和“使用并发池。大小=”选项,我们可以模拟真实的浏览器,但我的要求是模拟特定的浏览器。如果可能的话,有人可以提供实现它的步骤吗?
最近从 Visual Studio 2015 更新到 2017,我遇到了一个引用问题,性能测试命名空间和 dll 引用似乎已经消失。
我终于弄清楚是什么导致了它,但我想可能会有一些人遇到这个问题,所以我也会包括解决方案。
我想对托管在 AWS 服务器上的应用程序进行性能测试。用作数据库的 SQL。
为了进行性能测试,可以使用哪些工具?我可以使用 JMeter 来运行脚本吗?如何衡量服务器性能(内存、CPU 使用率、网络)?
jmeter amazon-ec2 load-testing performance-testing amazon-web-services
我有一个 Node.js 应用程序,想进行性能测试。我已经使用 JMeter 工具来记录业务场景,但请求具有一些加密信息,但这些值是输入,并希望使用 CSV 文件进行参数化。
我觉得 JMeter 不是 Node.js 应用程序的最佳选择。有人可以为 Node.js 应用程序推荐开源工具吗?
我是负载测试的初学者,我正在单页 Web 应用程序上使用 JMeter 进行负载测试。我现在面临的问题是,正如您在 SPA 中知道的那样,只有一个 URL 并且页面包含多个选项卡,我如何使用 JMeter 在选项卡之间切换。您可以在下图中看到我的测试计划。

我知道我知之甚少,欢迎提供任何链接或指南,因为谷歌关于 SPA 的信息有限。
testing automated-tests jmeter performance-testing single-page-application
我一直在 LeetCode 上练习 C++ 编程,每当我提交解决方案时,它都会告诉我我的程序运行了多长时间以及使用了多少内存。
我正在使用 mac 和带有 g++ 的 VSCode 在本地编译我的程序。我想找到一种工具或方法,可以用来获取有关程序的运行时间和内存使用情况的相同信息,以便我可以尝试调整它以查看对性能的影响。
是否有编译器选项或诸如命令行工具或 VSCode 扩展之类的东西可以运行我的程序,或者我是否必须向程序添加代码来跟踪时间和内存本身?
尝试配置 Nginx 有两个目的:
由于我们使用默认配置和镜像指令时遇到了非常低的性能,因此我们决定尝试使用反向代理来检查是否对服务器有影响,并且确实看起来 nginx 将流量限制了几乎一半(我们正在使用 Locust和 Jmeter 作为加载工具)
Nginx 版本:1.19.4
尝试了10 个提高 10 倍应用程序性能的技巧并调整 NGINX 性能, 但没有效果。运行 nginx 和 tomcat 的机器应该足够强大(EC2 c5.4XLarge),我们没有看到资源缺乏,但网络上限更多。TIME_WAIT 连接数非常高 (20k-40k)
从机器角度:
Nginx视角(之后添加nginx.conf):
nginx.conf:
user nginx;
worker_processes 10;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_rlimit_nofile 100000;
events {
worker_connections 3000;
}
http {
include /etc/nginx/mime.types;
default_type …Run Code Online (Sandbox Code Playgroud) nginx performance-testing tomcat7 centos7 nginx-reverse-proxy
我有以下代码(它无用,仅用于性能测试)
class A:
def __init__(self, i):
self.i = i
start = datetime.now()
foo = {}
for i in range(10000000):
foo[i] = A(i)
print('\nSpent: [ {} ] seconds!'.format((datetime.now()-start).total_seconds()))
Run Code Online (Sandbox Code Playgroud)
事实是,当我用Python3.7运行它时,得到以下结果
Spent: [ 7.644764 ] seconds!
Run Code Online (Sandbox Code Playgroud)
但是当我用Python3.6运行它时
Spent: [ 6.521555 ] seconds!
Run Code Online (Sandbox Code Playgroud)
所以问题是,我是否会误解某些东西,还是旧版本的python速度更快,应该使用旧版本的python?
UPD:如评论中所建议,我使用了timeit模块,这里是结果
python3.7 -m timeit '"-".join(str(n) for n in range(2000000))'
1 loop, best of 5: 499 msec per loop
python3.6 -m timeit '"-".join(str(n) for n in range(2000000))'
10 loops, best of 3: 405 msec per loop
Run Code Online (Sandbox Code Playgroud)
的结果timeit对于3.7来说仍然不好,真的比3.6慢吗?
jmeter ×4
amazon-ec2 ×2
c# ×2
load-testing ×2
performance ×2
benchmarking ×1
c++ ×1
centos7 ×1
dll ×1
g++ ×1
java ×1
mongodb ×1
nginx ×1
node.js ×1
python ×1
python-3.x ×1
testing ×1
tomcat ×1
tomcat7 ×1