标签: performance-testing

Mongodb:无法从 shard01 写入结果...引起的..分片连接池:连接失败

环境

  1. 蒙戈数据库2.6.3
  2. CentOS 版本 6.5(最终版)
  3. 爪哇1.7
  4. 雄猫7
  5. Jmeter 2.11
  6. 亚马逊 EC2

我们的 mongo 数据库托管在亚马逊 EC2 中。我们根据推荐的生产架构设置了服务器,如下:

  • 3个配置服务器
  • 2 个 mongos 与 tomcats 一起运行
  • 2 mongod,这是一个具有主库和辅助库的副本集(分片 1)

我们目前正在对 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)

java tomcat amazon-ec2 performance-testing mongodb

0
推荐指数
1
解决办法
3766
查看次数

声明中间计算和性能的变量

抱歉,这是个愚蠢的问题,但我不得不问这个。我有一个运行数十亿次计算的程序,我正在努力让它运行得更快。在我的程序中,我声明了很多用于中间计算的变量。例如,在伪代码中:

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)

我知道这看起来很可怕,我的直觉告诉我这并不重要,但我只是想看看其他人是否同意。

c# performance-testing variable-declaration

0
推荐指数
1
解决办法
223
查看次数

如何在jmeter负载运行中模拟不同的浏览器?

是否可以使用 Jmeter 模拟在不同桌面浏览器及其版本中运行的负载?我知道通过使用“从 HTML 文件中检索所有嵌入式资源”和“使用并发池。大小=”选项,我们可以模拟真实的浏览器,但我的要求是模拟特定的浏览器。如果可能的话,有人可以提供实现它的步骤吗?

cross-browser jmeter performance-testing

0
推荐指数
1
解决办法
4272
查看次数

升级到 Visual Studio 2017 后找不到 Microsoft.VisualStudio.TestTools.LoadTesting

最近从 Visual Studio 2015 更新到 2017,我遇到了一个引用问题,性能测试命名空间和 dll 引用似乎已经消失。

我终于弄清楚是什么导致了它,但我想可能会有一些人遇到这个问题,所以我也会包括解决方案。

c# dll load-testing performance-testing visual-studio-2017

0
推荐指数
1
解决办法
853
查看次数

我们可以使用哪些工具在 aws 服务器上进行性能测试?

我想对托管在 AWS 服务器上的应用程序进行性能测试。用作数据库的 SQL。

为了进行性能测试,可以使用哪些工具?我可以使用 JMeter 来运行脚本吗?如何衡量服务器性能(内存、CPU 使用率、网络)?

jmeter amazon-ec2 load-testing performance-testing amazon-web-services

0
推荐指数
1
解决办法
4830
查看次数

Nodejs应用性能测试最佳工具

我有一个 Node.js 应用程序,想进行性能测试。我已经使用 JMeter 工具来记录业务场景,但请求具有一些加密信息,但这些值是输入,并希望使用 CSV 文件进行参数化。

我觉得 JMeter 不是 Node.js 应用程序的最佳选择。有人可以为 Node.js 应用程序推荐开源工具吗?

jmeter performance-testing node.js

0
推荐指数
1
解决办法
4678
查看次数

SPA中的Jmeter负载测试

我是负载测试的初学者,我正在单页 Web 应用程序上使用 JMeter 进行负载测试。我现在面临的问题是,正如您在 SPA 中知道的那样,只有一个 URL 并且页面包含多个选项卡,我如何使用 JMeter 在选项卡之间切换。您可以在下图中看到我的测试计划。 在此处输入图片说明

我知道我知之甚少,欢迎提供任何链接或指南,因为谷歌关于 SPA 的信息有限。

testing automated-tests jmeter performance-testing single-page-application

0
推荐指数
1
解决办法
805
查看次数

C++ 获取运行时间和内存使用情况

我一直在 LeetCode 上练习 C++ 编程,每当我提交解决方案时,它都会告诉我我的程序运行了多长时间以及使用了多少内存。

我正在使用 mac 和带有 g++ 的 VSCode 在本地编译我的程序。我想找到一种工具或方法,可以用来获取有关程序的运行时间和内存使用情况的相同信息,以便我可以尝试调整它以查看对性能的影响。

是否有编译器选项或诸如命令行工具或 VSCode 扩展之类的东西可以运行我的程序,或者我是否必须向程序添加代码来跟踪时间和内存本身?

c++ performance benchmarking g++ performance-testing

0
推荐指数
1
解决办法
2293
查看次数

Nginx反向代理性能低下

尝试配置 Nginx 有两个目的:

  • 反向代理将请求重定向到本地 tomcat 服务器(mcat 监听的端口 443 到 10443)
  • 将请求镜像到后端服务器以进行分析

由于我们使用默认配置和镜像指令时遇到了非常低的性能,因此我们决定尝试使用反向代理来检查是否对服务器有影响,并且确实看起来 nginx 将流量限制了几乎一半(我们正在使用 Locust和 Jmeter 作为加载工具)

Nginx 版本:1.19.4

尝试了10 个提高 10 倍应用程序性能的技巧调整 NGINX 性能, 但没有效果。运行 nginx 和 tomcat 的机器应该足够强大(EC2 c5.4XLarge),我们没有看到资源缺乏,但网络上限更多。TIME_WAIT 连接数非常高 (20k-40k)

从机器角度:

  • 增加网络端口范围(1024 65300)
  • 降低 tcp_fin_timeout (15ms)
  • 将最大 FD 增加到最大

Nginx视角(之后添加nginx.conf):

  • keepalive_requests 100000;keepalive_timeout 1000;
  • worker_processes 10(16 是 CPU 数量)
  • 工人连接数 3000;
  • worker_rlimit_nofile 100000;

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

0
推荐指数
1
解决办法
7201
查看次数

为什么Python3.6的结果比3.7好?

我有以下代码(它无用,仅用于性能测试)

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慢吗?

python performance performance-testing python-3.x

-1
推荐指数
1
解决办法
854
查看次数