小编Abh*_*hna的帖子

在高消息速率下使用 pebbe zmq 代理时 CPU 使用率较高

我目前正在尝试使用 ZMQ 作为 IPC 的可能消息代理。
版本 -> ZMQv4
我正在使用pebbe ZMQ,这是一个基于 zmq 的 C 库的 go 库并执行测试。

我正在以 1500 条消息/秒和 10000 条消息/秒的消息速率对其进行速率测试。

我正在使用 XPUB-XSUB 架构,发布者和订阅者连接到代理。

我知道 go 库只是一个包装器,因此实际发送和接收消息涉及 c-go 调用。

我正在ARM架构的设备上进行实验。我看到在代理本身上以 1500 条消息/秒的速率传递消息时,CPU 使用率几乎为 40-50%(100% 为 ~1GB,RAM 上为 ~900MB,交换内存为 ~100MB)。

我不确定这是否可以或使用率很高。不太确定在这里用什么作为码尺。

我运行了分析测试,发现运行时 cgocall 和运行时 _ExternalCode 占用了大部分 CPU。已附上个人资料图的图像(不知道如何上传 SVG)。

在此输入图像描述

我试图了解或减少 CPU 使用率。根据这份资料,我认为我无能为力。有没有办法减少由于 C Go 调用和配置文件中显示的外部代码块而导致的 CPU 占用。
之前没有真正做过分析,所以可能不知道很多事情。

重现示例的代码:

ZMQ经纪商


import (
    "fmt"

    zmq "github.com/pebbe/zmq4"
    "github.com/pkg/profile"
)

func main() {
    defer profile.Start(profile.CPUProfile, profile.ProfilePath(".")).Stop()
    fmt.Println("Setting up XSUB socket")
    subscriberSocket, err := …
Run Code Online (Sandbox Code Playgroud)

sockets arm message-passing go zeromq

7
推荐指数
0
解决办法
382
查看次数

JWT 令牌到期时间失败 .net 核心

我正在尝试通过 .NET Core 2.1 中的刷新令牌和 JWT 实现基于令牌的身份验证。

这就是我实现 JWT 令牌的方式:

启动文件

services.AddAuthentication(option =>
    {
        option.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        option.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        option.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
    }).AddJwtBearer(options =>
    {
        options.SaveToken = true;
        options.RequireHttpsMetadata = true;
        options.TokenValidationParameters = new TokenValidationParameters()
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidAudience = Configuration["Jwt:Site"],
            ValidIssuer = Configuration["Jwt:Site"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:SigningKey"]))
        };

        options.Events = new JwtBearerEvents
        {
            OnAuthenticationFailed = context =>
            {
                if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
                {
                    context.Response.Headers.Add("Token-Expired", "true");
                }
                return Task.CompletedTask;
            }
        };
    });
Run Code Online (Sandbox Code Playgroud)

代币生成:

var jwt …
Run Code Online (Sandbox Code Playgroud)

access-token jwt asp.net-web-api .net-core refresh-token

6
推荐指数
1
解决办法
1万
查看次数

从另一个 C# 可执行文件中在 linux 中运行 c# 可执行文件时,“没有这样的文件或目录”

我正在尝试以下操作:

1) 从另一个可执行文件运行 ac# 可执行文件。

我正在使用.net core 3.1

问题

  • 当我在 Linux 中运行该应用程序时,出现以下错误。
Error =>No such file or directory    
 Exception encountered => System.ComponentModel.Win32Exception (2): No such file or directory
  at System.Diagnostics.Process.ForkAndExecProcess(String filename, String[] argv, String[] envp, String cwd, Boolean
  redirectStdin, Boolean redirectStdout, Boolean redirectStderr, Boolean
  setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32&
  stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal,
  Boolean throwOnNoExec)
         at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
         at System.Diagnostics.Process.Start()
         at ConsoleMQTT_Sender.ProcessClass.LaunchProcess(....) in ...
Run Code Online (Sandbox Code Playgroud)

该应用程序是通过在linux环境中运行的jenkins生成的。

该文件存在,但出现上述错误。

这是跨平台问题吗?或者权限问题?

运行第一个可执行文件时的标志

  • dotnetfirstexecutable.dll --secondexecutablepath“/opt/publish/xyz.dll”
  • dotnet firstexecutable.dll --secondexecutablepath“dotnet /opt/publish/xyz.dll” …

c# .net-core

5
推荐指数
0
解决办法
2153
查看次数

找不到Asp.net Core 2.0静态文件错误

大家好我想创建一个ASP.net Core 2.0 Web应用程序; 我已将静态文件放在名为Content的文件夹中.

在此输入图像描述

我给出以下路径:

<link href="@Url.Content("../Content/css/style.css")" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

我在加载视图时收到404 - 未找到错误.但是,GET请求路径是正确的,并且该文件存在于同一路径中.这是GET请求的完成路径:

http://localhost:49933/Content/css/style.css 
Run Code Online (Sandbox Code Playgroud)

我发现需要我更改web.config文件中的设置的解决方案,但.Net Core 2.0没有.我用过MVC.对于IIS,web.config文件不是很重要吗?

.net asp.net asp.net-core-mvc asp.net-core asp.net-core-2.0

4
推荐指数
1
解决办法
2491
查看次数

S3和.net Amazon SDK-由于保护级别而无法访问GetObject

嗨,大家好,我正在尝试使用C#将文件从S3下载到iin .net的字节数组中。

我正在遵循以下方法:

var client = new AmazonS3Client(AccessKey, SecretKey, Amazon.RegionEndpoint.EUWEST2);
    using (client)
    {
        MemoryStream ms = new MemoryStream();
        GetObjectRequest getObjectRequest = new GetObjectRequest();
        getObjectRequest.BucketName = Bucketname;
        getObjectRequest.Key = Keyname;

        using (var getObjectResponse = client.GetObject(getObjectRequest))
        {
            getObjectResponse.ResponseStream.CopyTo(ms);
        }
 }
Run Code Online (Sandbox Code Playgroud)

我提到了stackoverflow答案,并遵循上述方法。

但是我收到以下错误信息:

由于保护级别,无法访问GetObject。

我只是在学习S3,如果这个错误是由于存储桶策略或类范围引起的,我现在很困惑!

谢谢:)。

c# asp.net amazon-s3 amazon-web-services asp.net-core

2
推荐指数
1
解决办法
685
查看次数

从另一个容器访问一个容器中的MySQL

我正在尝试以下方法:

  • 在一个带有暴露端口(例如4200)的容器中旋转MySQL 5.5。
  • 在一个带有裸露端口(例如4300)的容器中旋转MySQL 5.7。
  • 旋转golang容器来运行我的应用。

我的想法是我需要针对不同的数据库版本运行测试。

为此,我需要能够与golang容器中的每个sql容器进行对话。

我尝试过的

方法1-使用--link:

MYSQL容器:

docker run --name mysql55c -p 127.0.0.1:4200:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.5
Run Code Online (Sandbox Code Playgroud)

高朗应用程式容器

docker run -w /go/src/app -it --link mysql55c -d --name golangapp -v $(pwd):/go/src/app golang bash -c "go get github.com/go-sql-driver/mysql;go build main.go; go test -v
--config ./config.ini"
Run Code Online (Sandbox Code Playgroud)

方法2-使用--net(网桥网络和主机): 创建网桥nw

码头工人网络

MYSQL容器:

docker run --name mysql55c --net mynw -p 127.0.0.1:4200:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.5
Run Code Online (Sandbox Code Playgroud)

高朗应用程式容器

docker run -w /go/src/app -it --net mynw -d --name golangapp -v $(pwd):/go/src/app golang bash -c "go …
Run Code Online (Sandbox Code Playgroud)

containers jenkins docker dockerhub devops

1
推荐指数
2
解决办法
161
查看次数

处理外部库的恐慌

我是 Rust 的新手,并且已经了解 Rust 默认为恐慌而不是异常。

我有一个依赖于外部库的 rust 项目。

我已经?使用match语句处理了代码中的所有解包和's ,但我不确定如何panic通过外部库处理 a 。

在其他语言中,我只会捕获库抛出的异常。

由于 Rust 默认为 panics,库不会返回异常,但会panic中止线程的执行。

理想情况下,我希望记录并继续执行,而不是恐慌和中止。

我尝试了以下方法:

  • catch_unwind,但这看起来像我不能在外部库上使用的东西。
  • log-panicscrate,它使用恐慌钩子记录恐慌。我能够记录恐慌,但不能防止中止。

error-handling panic rust rust-cargo

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

将ID传递给URL,ASP.NET MVC

我正在尝试将ID传递给URL,但是我无法对ID进行硬编码,但我需要从模型中传递id.

它基本上是显示为表格的特定类型模型的集合.当用户点击表的id值时,我需要能够将id传递给URL,以便它可以打开相应的详细页面.

<a href="~/Instance/Details/id=@Url.Encode(modelitem => item.Id)">   @Html.DisplayFor(modelitem => item.Id)</a>
Run Code Online (Sandbox Code Playgroud)

这就是我想要的,需要帮助:).

.net c# asp.net-mvc

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