小编Den*_*gin的帖子

dotnet core + Angular Universal + docker =>由于错误,预渲染失败:错误:无法找到模块

我们有一个使用Dotnet核心Angular Universal开发的项目.我们使用Asp.net Core SPA服务的prerender功能.在本地环境中,该应用程序适用于Windows,Linux.使用Visual Studio自己的docker多阶段构建模板时会出现一些问题.在我们在microsoft/aspnetcore-build映像中构建它之后,我们将文件传输到microsoft/aspnetcore映像.由于Asp.net SPA对nodejs的依赖,我们还将nodejs安装到microsoft/aspnetcore映像.

但是当我们运行应用程序时,我们在main.bundle.js(服务器端)的预渲染阶段得到错误"由于错误导致预渲染失败:错误:无法找到模块'angular2-universal-polyfills'".我们相信这个问题与'angular2-universal-polyfills'没有关系,因为我们也尝试过其他polyfill并遇到类似的错误.

但是当我们将.net核心和nodejs安装到单个容器而不是多阶段构建中并在同一容器内构建和发布操作时,我们的应用程序就可以工作.但是容器的大小是2 GB.

从理论上讲,我们构建的容器和我们运行的容器之间没有区别.两者都安装了.net核心和nodejs.唯一的区别是我们将发布输出复制到我们运行的容器.

发布输出

root
    wwwroot (angular client-side dist)
        assets
        inline.bundle.js
        main.bundle.js
        polyfill.bundle.js
        vendor.bundle.js
    CodefictionApp/dist-server (angular server-side dist)
        assets
        main.bundle.js
    dlls
Run Code Online (Sandbox Code Playgroud)

工作Dockerfile

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM buildpack-deps:jessie-scm

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        libc6 \
        libcurl3 \
        libgcc1 \
        libgssapi-krb5-2 \
        libicu52 \
        liblttng-ust0 \
        libssl1.0.0 \
        libstdc++6 \
        libunwind8 \
        libuuid1 \
        zlib1g \
    && rm -rf /var/lib/apt/lists/*

ENV DOTNET_SDK_VERSION 2.1.200
ENV DOTNET_SDK_DOWNLOAD_URL …
Run Code Online (Sandbox Code Playgroud)

docker .net-core asp.net-core angular-universal angular

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

读取包含二进制格式文件的大文件并以最小堆分配提取这些文件

抱歉,这个标题可能有点令人困惑,但我不知道如何更好地解释它。

有两个文件扩展名为 .cat(目录文件)和 .dat。.cat 文件包含 .dat 文件中二进制文件的信息。此信息是文件的名称、文件大小、.dat 文件中的偏移量和 md5 哈希值。

.cat 文件示例;

assets/textures/environments/asteroids/ast_crystal_blue_diff-small.gz 22387 1546955265 85a67a982194e4141e08fac4bf062c8f
assets/textures/environments/asteroids/ast_crystal_blue_diff.gz 83859 1546955265 86c7e940de82c2c2573a822c9efc9b6b
assets/textures/environments/asteroids/ast_crystal_diff-small.gz 22693 1546955265 cff6956c94b59e946b78419d9c90f972
assets/textures/environments/asteroids/ast_crystal_diff.gz 85531 1546955265 57d5a24dd4da673a42cbf0a3e8e08398
assets/textures/environments/asteroids/ast_crystal_green_diff-small.gz 22312 1546955265 857fea639e1af42282b015e8decb02db
assets/textures/environments/asteroids/ast_crystal_green_diff.gz 115569 1546955265 ee6f60b0a8211ec048172caa762d8a1a
assets/textures/environments/asteroids/ast_crystal_purple_diff-small.gz 14179 1546955265 632317951273252d516d36b80de7dfcd
assets/textures/environments/asteroids/ast_crystal_purple_diff.gz 53781 1546955265 c057acc06a4953ce6ea3c6588bbad743
assets/textures/environments/asteroids/ast_crystal_yellow_diff-small.gz 21966 1546955265 a893c12e696f9e5fb188409630b8d10b
assets/textures/environments/asteroids/ast_crystal_yellow_diff.gz 82471 1546955265 c50a5e59093fe9c6abb64f0f47a26e57
assets/textures/environments/asteroids/xen_crystal_diff-small.gz 14161 1546955265 23b34bdd1900a7e61a94751ae798e934
assets/textures/environments/asteroids/xen_crystal_diff.gz 53748 1546955265 dcb7c8294ef72137e7bca8dd8ea2525f
assets/textures/lensflares/lens_rays3_small_diff.gz 14107 1546955265 a656d1fad4198b0662a783919feb91a5
Run Code Online (Sandbox Code Playgroud)

我确实相对轻松地解析了这些文件,并且使用了Span<T>一些基准测试后BenchmarkDotNet,我相信我已经尽可能地优化了这些类型文件的读取。

但 .dat 文件则是另一回事。典型的 .dat 文件大小为 GB。

我首先尝试了我能想到的最直接的方法。

(我删除了空检查和验证代码以使代码更具可读性。)

assets/textures/environments/asteroids/ast_crystal_blue_diff-small.gz 22387 1546955265 …
Run Code Online (Sandbox Code Playgroud)

.net c# filestream binary-data large-files

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

Akka.Cluster的端口耗尽问题

我们为短信,电子邮件和推送通知创建了Akka Cluster基础架构.系统中存在3种不同类型的节点,即客户端,发送方和灯塔.Web应用程序和API应用程序正在使用客户端角色(Web和API在IIS上托管).Lighthouse和Sender角色作为Windows服务托管.我们还运行了另外4个与发送者角色相同的Windows服务的控制台应用程序.

我们在Web服务器中遇到端口耗尽问题大约2周.我们的Web服务器开始快速使用端口,一段时间后我们无法执行任何SQL操作.有时我们别无选择,只能重置iis.如果发件人角色中有多个节点,则会出现此问题.我们诊断出来并找到了问题的根源.

---------------
HOST                  OPEN    WAIT
SRV_NOTIFICATION      3429    0
SRV_LOCAL             198     0
SRV_UNDEFINED_IPV4    23      0
SRV_DATABASE          15      0
SRV_AUTH              4       0
SRV_API               6       0
SRV_UNDEFINED_IPV6    19      0
SRV_INBOUND           12347   5

TotalPortsInUse   : 17286
MaxUserPorts      : 64510
TcpTimedWaitDelay : 30
03/23/2017 09:30:10
---------------
Run Code Online (Sandbox Code Playgroud)

SRV_NOTIFICATION是灯塔发送者节点运行的服务器.SRV_INBOUND是我们的Web服务器.检查此表后,我们检查了Web服务器上分配的端口.我们得到的结果如下表所示.在netstat中有超过12000个连接,如下所示:

TCP    192.168.1.10:65531     192.168.1.10:3564      ESTABLISHED     5716   [w3wp.exe]
TCP    192.168.1.10:65532     192.168.1.101:17527    ESTABLISHED     5716   [w3wp.exe]
TCP    192.168.1.10:65533     192.168.1.101:17527    ESTABLISHED     5716   [w3wp.exe]
TCP    192.168.1.10:65534     192.168.1.10:3564      ESTABLISHED     5716   [w3wp.exe]
Run Code Online (Sandbox Code Playgroud)

192.168.1.10 Web服务器192.168.1.10:3564 API 192.168.1.101:17527灯塔

连接正在打开但未关闭.

部署完成后,我们的Web和Api应用程序将离开并重新加入群集,并为固定端口配置.我们正在使用@cgstevens创建的应用程序监视我们的集群.即使我们为Actor系统实现了grecaful关闭逻辑,但有时WEB和API应用程序无法离开集群,因此我们必须手动删除节点并重新启动actor系统.

我们在开发环境中重现了这个问题,并在下面录制了一个视频

https://drive.google.com/file/d/0B5ZNfLACId3jMWUyOWliMUhNWTQ/view

我们的节点hocon配置如下:

WEB和API

<akka>
    <hocon><![CDATA[ …
Run Code Online (Sandbox Code Playgroud)

akka.net akka.net-cluster

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