【问题标题】:Shared class or memory over IIS worker process in NUMA web garden在 NUMA 网络花园中通过 IIS 工作进程共享类或内存
【发布时间】:2019-02-09 06:45:39
【问题描述】:

我现在有一个用 .Net Core 编写的网站,我们有很多访问者,我想使用网络花园并提高性能,因为在高峰时间网站变得很慢。

多核工作处理器的问题是: 我有一类检查银行付款的时间,用户多次发送请求,其中一个请求使用 WP1,第二个请求进入 WP2,两者同时运行相同的功能,账户余额增加了 2 倍或更多。

这也可能发生在单个进程中,但我制作了控制每个用户的共享类,每个会话不运行 1 个 Web API 帖子(重要的是用户不要同时使用他们的帐户运行多个帖子)

问题: 我如何在所有工作进程即时或 IIS 中的任何其他共享内存中使用这个共享类,我可以使用它来将字符串或序列化数据放入其中。我不想使用 sql server,因为它比内存慢,在这种情况下它对我没有帮助

【问题讨论】:

    标签: asp.net .net iis .net-core


    【解决方案1】:

    没有简单的开箱即用解决方案。

    您有哪些选项可以在不同的工作流程之间共享数据。

    数据库
    通用文件/文件数据库
    文件映射/共享内存
    提供服务并与之通信。

    更多阅读:

    Interprocess Communications
    Pipe Operations
    WCF

    【讨论】:

    • 只是当前在后控制器中的用户列表以及从列表中删除后的用户列表
    • @MasterProgrammer 听起来很简单——但它不是——几个月的工作来解决类似的问题,以获得最大的速度,并在不同的进程上使用相同的内存
    • 另外我必须说整个服务器是给我们的,我们可以在上面制作控制台应用程序来为这部分制作服务器。现在我正在考虑管道或套接字编程,您对此有何看法johnkoerner.com/csharp/IPC-in-net-core-using-protobuf
    • @MasterProgrammer 我使用 protobuf,它是由 stackoverflow 程序员之一在 c# 上制作的——它非常快速的序列化/反序列化协议。仍然是一个数据交换——如果你只使用一个文件数据库,甚至只是一个文件二进制读写,它会更快
    • 谢谢,我使用套接字编程并制作了套接字服务器并将所有类放入套接字服务器中,现在我可以在工作进程之间发送和接收,我可以毫无风险地使用 NUMA
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2011-02-28
    • 1970-01-01
    • 2016-12-28
    • 2016-07-23
    • 2016-06-25
    相关资源
    最近更新 更多