我们的目标是使用Kubernetes横向扩展.NET Core 2.0 Web API.Web API应用程序将由Kestrel提供.
看起来我们可以通过配置Kestrel的关闭超时来优雅地处理pod的终止,所以现在我们正在研究如何探测应用程序以确定准备和活跃度.
仅使用HTTP请求探测Web API是否足够?如果是这样,创建一个新的健康检查控制器以处理这些探测请求是一个好主意,还是探测在正常使用中消耗的实际端点更有意义?
在区分活跃度和准备度探测时,我们应该考虑什么?
kubernetes kestrel-http-server asp.net-core asp.net-core-webapi
我们的应用程序是部署在Linux Docker容器中并在Kubernetes中运行的ASP.NET Core 2.0 WebAPI.
在负载测试期间,我们发现CPU使用率出现间歇性峰值,而我们的应用程序永远无法从中恢复.
我们使用perfcollect从容器中收集痕迹,以便我们可以将成功的测试和测试与CPU峰值进行比较.我们发现,失败测试中大约75%的CPU时间花费在JIT_MonRelaibleEnter_Protable锁定操作的接口上.打电话的是System.Diagnostics.TraceSource.dll.
我们的应用程序是从.NET Framework移植而来的,包含很多调用System.Diagnostics.Trace.WriteLine().当我们删除所有这些时,我们的CPU /内存使用量减少了50%以上,我们不再看到CPU峰值了.
我想了解这个问题的原因.
在corefx repo中,我可以看到在TraceInternal.cs中设置了一个默认的跟踪侦听器:
public static TraceListenerCollection Listeners
{
get
{
InitializeSettings();
if (s_listeners == null)
{
lock (critSec)
{
if (s_listeners == null)
{
// In the absence of config support, the listeners by default add
// DefaultTraceListener to the listener collection.
s_listeners = new TraceListenerCollection();
TraceListener defaultListener = new DefaultTraceListener();
defaultListener.IndentLevel = t_indentLevel;
defaultListener.IndentSize = s_indentSize;
s_listeners.Add(defaultListener);
}
} …Run Code Online (Sandbox Code Playgroud) 在过去的几个月里,当我们分别尝试通过端口8080和7990连接到托管JIRA和Stash的内部服务器时,我们遇到了间歇性的102错误.
我不熟悉Java堆栈,但我相信在机器上安装JIRA时,它会设置Catalina Tomcat服务器.
我找不到任何有用的日志来表明任何问题.我可以采取哪些步骤来诊断此问题?
根据Azure文档,Functions V2使用.NET Core日志记录筛选器层次结构进行配置。
在下面的示例中,将ILogger的实例注入到该函数的Run方法中。
[FunctionName("MyFunction")]
public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger logger, ExecutionContext executionContext)
{
logger.LogInformation("I don't want to see this in production!"));
}
Run Code Online (Sandbox Code Playgroud)
检查ILogger对象时,每个LoggerInformation元素的MinLevel为null,这似乎记录了所有级别。
在生产中,我只想以错误级别登录。我希望能够使用环境变量进行配置,但是找不到任何说明如何实现此目的的文档。我尝试添加以下环境变量无效:
"logging__logLevel__Default: "Error"
Run Code Online (Sandbox Code Playgroud) 我有以下代码生成报告PDF,上传它然后删除生成中使用的临时图像:
// Generate document and then add a section with an image
var document = new Document {Info = {Title = "Results"}};
var section = document.AddSection();
var logo = section.AddImage(logoPath);
// Render the PDF
const PdfFontEmbedding embedding = PdfFontEmbedding.Always;
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(unicode, embedding);
pdfRenderer.Document = document;
pdfRenderer.RenderDocument(); // This is the line which locks the files
// Save the PDF to a memory stream and upload it to azure blob storage
var reportPath = "";
using (var stream …Run Code Online (Sandbox Code Playgroud) 我正在对内部票务系统进行一些改进。系统从我们的交换服务器中提取电子邮件,并将其转换为系统中的票证。在此票证生成过程中,我们已经从每个电子邮件的标题中获取信息。
我想知道的是,是否有办法确定电子邮件是否是办公室外的答复并已自动发送回去。这可以来自任何系统,而不仅仅是Outlook。这将很有用,因为这些电子邮件可以被过滤掉而不转换为票证,从而减少了系统中的垃圾邮件并节省了代理商的时间。
但是,这确实是必须的,因为我们宁愿手动处理这些电子邮件,也不愿错过非自动化的电子邮件。另一个有用的检测是无效地址,服务器消息等的反弹。
我正在用PHP开发,但是朝着正确方向的任何指针将不胜感激。
我的票务系统中有一张表,有15,000条记录,每条记录都包含一封电子邮件,该电子邮件已转换为要添加到故障单的邮件.
我们当前的问题是整理 - 当我得到系统时,它使用latin1_swedish_ci.但是,我们在系统中使用了几种欧洲语言,因此我们需要能够正确存储非ASCII字符.
我无法使用latin1_swedish_ci排序规则,但我在系统的测试版本上发现将排序规则切换为utf8_bin可以解决问题.
因此,我需要知道在实时系统上对我的表/列进行此更改是否安全.这会花费很长时间(当你试图让它真的很难工作时,PHPMyAdmin非常可怕)还是会破坏任何现有数据?
这是通过DLL公开的C++函数:
double my_exposed_cpp_function(int* my_array){
int i = my_array[2]; /* i should be 3 */
my_array[2]++;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的Delphi函数的声明
function dll_function(var my_array: array of integer): Real; stdcall; external myDLL name 'my_exposed_cpp_function';
Run Code Online (Sandbox Code Playgroud)
这是我想在Delphi函数中做的事情
procedure talk_to_dll();
var
return_value: Real;
my_array: array[0..2] of integer;
final_value: integer;
begin
my_array[0] = 1;
my_array[1] = 2;
my_array[2] = 3;
return_value := dll_function(my_array);
final_value = my_array[2]; /* my_array[2] should now be 4 */
end;
Run Code Online (Sandbox Code Playgroud)
希望这个例子能让我明白我的意图.我可以使用这个设置来处理更简单的数据类型,所以我知道Delphi和dll之间的通信很好.我需要改变什么才能使其正常工作?
我正在开发一个使用'with'命令的大型软件项目,我在调试时遇到了困难.
以下面的代码为例:
with record do
begin
record_property = 'some value';
end;
Run Code Online (Sandbox Code Playgroud)
如果我正在调试此代码并且我想看到record_property的值,我必须在record.record_property上添加一个监视,即使我在'with'块中暂停了.是否有Delphi 7的设置或附件,它允许"with"块创建的范围进入观察窗口?
这将使我的生活变得更加容易,因为有许多嵌套'with'块的情况,这使得很难弄清楚如何添加手表.
我正在开发一个服务,给定一个Swagger定义的URL,使用NSwag生成服务的C#代理.整个代理包含在一个C#文件中.
我想使用Roslyn自动将生成的代码编译成.NET Standard 2.0 DLL.这应该使用CSharpCompilation类在内存中完成.
为了确认这是可能的,我在Visual Studio 2017中创建了一个.NET Standard 2.0类库项目,并为Newtonsoft.Json(10.0.3)和System.ComponentModel.Annotations(4.4.0)添加了NuGet依赖项.我可以看到项目类型还引入了对.NETStandard.Library的SDK依赖.
我知道我不会使用项目文件来生成带有Roslyn的DLL,但是,我正在努力找出生成相同DLL的等效步骤.
我试图在添加/编辑条目后触发对TListBox控件中的项目进行排序。
我看到有一个我已设置为true 的Sorted属性,但是,每当我对内容进行更改时,它都不会对ListBox进行动态排序。似乎没有任何可用的排序过程或函数,并且调用Update或Refresh效果不理想。
我已经到了考虑将ListBox的内容拉入TStringList对象,对其进行排序然后将所有内容再次放回ListBox的阶段。不过,这似乎有些疯狂,我肯定会忽略一些更好的方法。
这是更改现有项目的示例:
myListBox.Items[myIndex] := newString; // Update Text
myListBox.Items.Objects[myIndex] := TObject(my_object); // Update associated object
Run Code Online (Sandbox Code Playgroud)
我希望控件进行更新以使内容按字母顺序排序,但事实并非如此。
我的应用程序顶部的导航栏有以下代码:
<li>@Html.ActionLink("Users", "Index", "Account")</li>
<li>@Html.ActionLink("Models", "Index", "Models")</li>
Run Code Online (Sandbox Code Playgroud)
在AccountController中,我有以下索引函数:
[Authorize(Roles = "Admin, CanEditGroup, CanEditUser")]
public ActionResult Index()
{
var users = _db.Users;
var model = new List<EditUserViewModel>();
foreach (var user in users)
{
var u = new EditUserViewModel(user);
model.Add(u);
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
在ModelsController中,我有以下索引函数:
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
当我点击"用户"链接时,我将被带到"/帐户"并正确显示索引.但是,当我点击"模型"链接时,我被带到'/ Models'并收到'HTTP Error 403.14 - Forbidden'错误.当我调试这个时,我可以看到'ModelsController'中的Index函数没有被命中.'/ Models/Index'工作得很好.
应该注意的是,我使用的是AccountController已经存在的模板.我已经添加了ModelsController.
最后,这是我的简单路由文件:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
请帮助我理解AccountController和ModelsController之间的区别,这会导致路由行为的差异.
asp.net-core ×3
delphi ×3
delphi-7 ×3
.net-core ×2
c# ×2
.net ×1
.net-4.5 ×1
asp.net-mvc ×1
azure ×1
c++ ×1
catalina ×1
collation ×1
dll ×1
docker ×1
email ×1
http-error ×1
jira ×1
kubernetes ×1
migradoc ×1
mysql ×1
networking ×1
outlook ×1
pdfsharp ×1
php ×1
php4 ×1
phpmyadmin ×1
roslyn ×1
routing ×1
sorting ×1
tlistbox ×1
tomcat ×1
wpf ×1