小编Joh*_*Bzz的帖子

促销视频在Google Play上不可见,但适用于Android Play

我在Google Play上的应用中添加了"宣传视频".它放在youtube上,介于30秒到2分钟之间,可以在Android设备上访问的Google Play上正常播放.但是当我去play.google.com上的app网页(在我的笔记本电脑上,使用任何浏览器)时,我看不到它.请注意,屏幕截图显示正确,并且视频已在48小时前添加到应用程序中.

我已经搜索过很多帮助文章和谷歌,但没有找到任何类似的问题或解决方案.

android google-play

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

Asp.net 核心健康检查随机失败并出现 TaskCanceledException 或 OperationCanceledException

我已经在我的 asp.net 核心应用程序中实现了健康检查。一项健康检查进行 2 项检查 - DbContext 连接和自定义一项检查 NpgsqlConnection。

在超过 99% 的情况下一切正常。有时,healthcheck 会失败并抛出TaskCanceledExceptionOperationCanceledException。从我的日志中我可以看到这个异常是在大约 2ms​​-25ms 之后抛出的(所以不可能发生任何超时)。

重要提示:

当我多次点击healtchecks(浏览器中的简单F5)时,它会抛出异常。看起来您无法在之前的健康检查完成之前点击 /health 端点。如果是这种情况 - 为什么?即使我进行Thread.Sleep(5000);了自定义健康检查(根本没有数据库连接检查),如果我/health在 5 秒过去之前击中端点,它也会失败。

问题:healtheck 是否以某种方式“神奇地”单线程(当您再次点击该端点时,它会取消之前的健康检查调用)?

Startup.cs 配置服务

services
    .AddHealthChecks()
    .AddCheck<StorageHealthCheck>("ReadOnly Persistance")
    .AddDbContextCheck<MyDbContext>("EFCore persistance");
Run Code Online (Sandbox Code Playgroud)

Startup.cs 配置

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseCors(options => options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());

app.UseMiddleware<RequestLogMiddleware>();
app.UseMiddleware<ErrorLoggingMiddleware>();

if (!env.IsProduction())
{
    app.UseSwagger();

    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1");
        c.SwaggerEndpoint($"/swagger/v2/swagger.json", $"V2");
    });
}

app.UseHealthChecks("/health", new HealthCheckOptions()
{
    ResponseWriter = WriteResponse
});

app.UseMvc(); …
Run Code Online (Sandbox Code Playgroud)

asp.net-core health-check

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

在收集CPU消耗的dotnet-trace文件中,System.Private.CoreLib消耗巨大的原因可能是什么?

我正在尝试查找我的应用程序 CPU 使用率高的原因。

长话短说

我相对简单的 .Net6 API 应用程序消耗 100% 的 1vCPU,每秒仅执行约 20 个请求(每个约 100 毫秒)(仅 2 个并发请求)。dotnet-trace显示不确定的瓶颈。

背景信息:

.Net6、ASP API 应用程序。应用程序在 kubernetes 集群上的 docker 容器中运行。它采用.Net6,并且具有专用的 1000m CPU(意味着 1 个完整的 vCPU)。

为了满足请求,应用程序调用数据库两次或三次,并调用外部 API 几次。该应用程序没有任何繁重的计算(没有图像处理,没有巨大的列表等)。刚刚等待DB调用和API调用,一些JSON序列化,HttpClient调用等。

问题是,1 个具有专用 1000m CPU(1 个 vCPU)的 pod 每秒处理大约 200 个请求,每个请求大约 100 毫秒,这意味着它只能同时处理大约 2 个请求。这样的负载几乎消耗了 100% 的专用 CPU,并且会创建新的 Pod。

IMO,由于大部分工作是“等待数据库或 API 返回数据”,我的服务器(每个 Pod)应该处理大约 10 倍的负载。

点网跟踪

dotnet-trace在我的容器中运行,但我无法真正理解数据。我的代码消耗的 CPU 总量不到 5%。以下功能消耗了大部分:

在此输入图像描述

ad 1. ~21% CPU System.Reflection.Emit.DynamicMethod.CreateDelegate- 这可能意味着什么?使用以下提示是否意味着 NewtonsoftJson 每次序列化某些内容时都会编译代码?

在此输入图像描述

ad 2. ~13% …

c# asp.net cpu-usage kubernetes

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

具有重要不变量的潜在大型集合的 DDD 聚合

我知道聚合应该很小并且它们应该保护不变量。我也知道在聚合中保存大型集合会影响性能。

我有一个用例,需要保护它的不变量,但也会导致大量收集。

Aggregate 是Vendor,它可以有多个活动的Promotion (s)。每个Promotion都有PromotionTypeStartDateEndDate。不变量是:

  • 在任何时候,每种促销类型最多可以有一次促销
  • 在任何时间点最多可以有 2 个促销活动
public Vendor : Aggregate {
    public Guid Id;
    public List<Promotion> Promotions;
    // some other Vendor props here

    public void AddPromotion(Promotion promo) {
        // protect invariants (business rules) here:
        // rule_1: if 2 promotions are already active during any time between promo.Start and promo.End then throw ex
        // rule_2: if during any time between promo.Start and promo.End there …
Run Code Online (Sandbox Code Playgroud)

domain-driven-design aggregate invariants

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

Flutter ReorderableDragStartListener 在移动设备上检测手势时出现问题(但在网络浏览器中工作正常)

我想在颤动中使用自定义拖动手柄来重新排序列表(可以立即工作,无需先长按)。

为了实现这一目标,我做了:

buildDefaultDragHandles: false,
Run Code Online (Sandbox Code Playgroud)

我用过ReorderableDragStartListener

代码:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final …
Run Code Online (Sandbox Code Playgroud)

android flutter flutter-material

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

应如何实现 DbContext 和与数据库的连接来处理负载测试?

我最近开始实施一些负载测试。我正在使用 .NetCore、EF Core 2.2 和 Postgres。

我正在调用我的测试服务器(使用HttpClient client.PostAsync("/api/resource");)。

我发现我的请求很少因为连接太多而失败 ( The connection pool has been exhausted, either raise MaxPoolSize (currently 100) or Timeout (currently 15 seconds))。所以我实施了这样的方法:

services.AddDbContext<MyDbContext>(optionsAction: optionsBuilder =>
    optionsBuilder.UseNpgsql(Config.ConnectionString,
    optionsAction =>
    {
        optionsAction.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null);
    }));
Run Code Online (Sandbox Code Playgroud)

它有点帮助,但仍然,当调用例如 500 个请求时,我遇到了错误。

我想,它应该以某种方式工作,例如,如果系统能够同时处理 100 个请求(例如 100 个到数据库的连接),则其余请求(使用MyDbContext)应该等待(而不是失败)。

所以我的问题是:

  1. 在高负载下,请求会因为可能的并发连接数达到最大值而失败,这是否正常?
  2. 如果上述情况成立 - 正常方法是使用EnableRetryOnFailure?
  3. 是否可以让其他请求以非阻塞方式(例如最多 20 秒)等待,直到有一些连接可用?
  4. 或者也许有其他配置选项(在 EF core 或 MVC 中)来发出其他请求来等待可用连接(来自连接池)而不是因异常而失败?

c# postgresql ef-core-2.2

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

DDD、CQRS、洋葱架构、企业级应用的ef核心

最近我发现以下方法对我参与的许多项目都很有效。然而,问题是,我读到 ef core DbContext 本身就是一个 UoW,我不应该创建自己的 UoW 和存储库。但在这种情况下,我无法从应用程序逻辑层中抽象出持久层。

TL;DR 问题是: 是否有可能既不拥有自己的存储库也不拥有 UoW,并且仍然遵循上述架构,并将 DbContext 作为 UoW?

我的架构如下:

第 1 层(最内部):聚合、实体、POCO 域类、值对象

第 2 层: 域服务

第 3 层: 应用程序服务(CQRS 命令、查询、处理程序)和存储库接口

第 4A 层:(持久层)存储库实现(此处注入 DbContext)EF Core 映射(ORM 映射)

第 4B 层: Asp MVC API(此处注册 DI)

API 的控制器只是发出命令和查询(通过 MediatR)。

上述方法的优点是应用程序核心(第 1、2 和 3 层)完全从持久性中抽象出来。缺点是您确实必须编写自己的存储库。

这是正确的方法吗?或者我错过了什么?

domain-driven-design entity-framework cqrs onion-architecture

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