我正在尝试使用http客户端使用PoolingClientConnectionManager为各个主机设置最大连接来命中服务器
//Code that inilizes my connection mananger and http client
Run Code Online (Sandbox Code Playgroud)
HttpParams httpParam = httpclient.getParams(); HttpConnectionParams.setSoTimeout(httpParam,SOCKET_TIMEOUT);
HttpConnectionParams.setConnectionTimeout(httpParam, CONN_TIMEOUT);
httpclient.setParams(httpParam);
//Run a thread which closes Expired connections
new ConnectionManager(connManager).start();
//Code that executes my request
HttpPost httpPost = new HttpPost(url);
HttpEntity httpEntity = new StringEntity(request, "UTF-8");
httpPost.setEntity(httpEntity);
Header acceptEncoding = new BasicHeader("Accept-Encoding", "gzip,deflate");
httpPost.setHeader(acceptEncoding);
if(contenttype != null && !contenttype.equals("")){
Header contentType = new BasicHeader("Content-Type", contenttype);
httpPost.setHeader(contentType);
}
InputStream inputStream = null;
LOG.info(dataSource + URL + url + REQUEST + request);
HttpResponse …Run Code Online (Sandbox Code Playgroud) 我正在考虑开发一个嵌入式Linux项目(工业应用程序)的Yocto项目,对于那些有嵌入式Linux经验的人,我有一些问题--Yocto会获得奖金.只需要了解固件更新中常见的内容.
我有一些要求,即身份验证,安全通信协议,如果更新失败,某种类型的回滚.此外,如果有一种方法可以逐步在整个设备上释放补丁,那么这也很有意思,因为我想避免在现场使用砖块设备.
如何在今天为现场设备部署更新/补丁 - 以及开发它需要多长时间?我还缺少其他考虑因素吗?
我试图找到一种方法来打败H/W预取器来检测流模式并以随机顺序访问4KB数据,这样就不会被H/W预取器检测和预取.
最初我想以随机模式访问所有偶数索引数据,因为H/W预取器总是预取下一个缓存行(所以当我访问偶数索引时,下一个奇数索引数据已被预取).
我编写代码以随机模式访问所有偶数索引数据,但结果表明预取器检测到模式(不知道如何?没有固定步幅,都是随机步幅)
我正在调查原因 - 为什么会发生这种情况,然后我在英特尔发现了这篇文章; https://software.intel.com/en-us/forums/topic/473493
根据John D. McCalpin博士的说法,"带宽博士,
在"Intel 64和IA-32架构优化参考手册"(文档248966-028,2013年7月)的第2.2.5.4节中,它指出,
流式传输器预取器"[d]检测并维护多达32个数据访问流.对于每个4K字节页面,您可以维护一个前向流和一个后向流.
这意味着L2硬件预取器跟踪最近访问的16个4KiB页面,并记住这些页面的足够访问模式以跟踪一个前向流和一个后向流.因此,要通过"随机"提取来击败L2流式传输器预取器,只需确保在对先前引用的页面进行第二次引用之前访问超过15个其他4 KiB页面.因此,"随机"提取序列可以由超过16个4个KiB页码的随机排列组成,每个页面内具有随机偏移.(我的排列列表通常至少使用32页.)
所以这意味着在访问相同4KB页面的两个不同随机索引之间,我们需要访问至少16个4KB页面来击败H/W预取器.
我已经实现了John D. McCalpin建议的概念,但结果再次表明h/w预取器没有被击败.它能够检测一些模式和预取数据(参见示例输出).我有20-40个4KB页面的不同访问页数,但结果没有改进/变化.
这是我的代码:
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sched.h>
#ifndef _POSIX_THREAD_PROCESS_SHARED
#error This system does not support process shared mutex
#endif
#define MAX_COUNT 3000
#define INDEX (40*1024) // size of DUMMY 40 4KB pages
inline void clflush(volatile void *p)
{
asm volatile ("clflush (%0)" :: "r"(p));
}
unsigned long probe(char *adrs) {
volatile unsigned long …Run Code Online (Sandbox Code Playgroud) 我有一个SSIS包,可以将数据导出到几个Excel文件,以便传输给第三方.为了使它在64位服务器上作为预定作业运行,我理解我需要将步骤设置为CmdExec类型并调用32位版本的DTExec.但我似乎无法使命令正确传递Excel文件的连接字符串.
到目前为止我有这个:
DTExec.exe /SQL \PackageName /SERVER OUR2005SQLSERVER /CONNECTION
LETTER_Excel_File;\""Provider=Microsoft.Jet.OLEDB.4.0";"Data
Source=""C:\Temp\BaseFiles\LETTER.xls";"Extended Properties=
""Excel 8.0;HDR=Yes"" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING E
Run Code Online (Sandbox Code Playgroud)
这给了我错误: Option "Properties=Excel 8.0;HDR=Yes" is not valid.
我已尝试过一些带引号的变体,但尚未能正确使用它.
有谁知道如何解决这一问题?
UPDATE:
感谢您的帮助,但我现在决定使用CSV文件,因为它们似乎只适用于64位版本.
我已经创建了自己的配方来构建我的SW,它在构建期间需要本机perl(例如,调用perl脚本来生成代码).如果我将配方添加到图像并使用bitbake与图像构建配方,则没有问题.
现在我还想用一个填充SDK来构建SW,但是我发现当我生成填充SDK时,本机perl只包含一些模块而没有构建我的SW所需的模块.我发现了两种使用其他perl模块生成填充SDK的方法:
对于1,它是特定于图像的解决方案.对于2,它是一个全球解决方案.
现在我正在寻找特定配方的解决方案.有没有我可以在我的配方.bb文件中添加一些配置的解决方案,然后我为包含我的配方的任何图像构建填充SDK将包含这些额外的本机perl模块?
Apache HttpClient 4.3b2,HttpCore 4.3.
我用来PoolingHttpClientConnectionManager同时管理5个连接:
PoolingHttpClientConnectionManager connectionManager;
HttpClient httpclient;
connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setDefaultMaxPerRoute(5);
httpclient = HttpClientBuilder.create().setConnectionManager(connectionManager).build();
Run Code Online (Sandbox Code Playgroud)
服务器有5秒的保持活动时间.当服务器启动关闭连接过程是停留在FIN_WAIT2状态,直到我将执行connectionManager.shutdown()或connectionManager.closeExpiredConnections()或connectionManager.closeIdleConnections(5, TimeUnit.SECONDS)手动.服务器等待FIN包.在服务器启动关闭过程后,如何在客户端自动关闭连接?
当我从Chrome浏览器发出请求时,服务器在尝试通过keep-alive关闭连接时保持TIME_WAIT状态(FIN_WAIT2状态变化非常快).如何使用Apache HttpClient获得相同的行为?
我的应用程序的makefile为CFLAGS添加了几个东西,如下所示:
CFLAGS += -Wall -std=gnu99
Run Code Online (Sandbox Code Playgroud)
但是当我使用OpenEmbedded BitBake构建应用程序时,BitBake显然忽略了makefile中的CFLAGS变量.
我发现在应用程序的配方中添加以下行会导致在构建期间通过BitBake使用标志:
EXTRA_OEMAKE += "CFLAGS='-Wall -std=gnu99'"
Run Code Online (Sandbox Code Playgroud)
为什么BitBake会忽略makefile中的CFLAGS?此外,是否有比将上述线添加到配方更好的解决方案?
我更喜欢使用makefile的CFLAGS来消除冗余.
我想通过使用某种递归安装例程而不是多次调用 install 来简化安装大型目录结构的 BitBake 配方。源目录布局在开发过程中经常发生变化,这导致配方修订比我想要处理的要多得多。
例如,以下 do_install() 将如何简化:
do_install() {
install -d ${D}/foo
install -m 0644 ${S}/foo/*.* ${D}/foo
install -d ${D}/foo/a
install -m 0644 ${S}/foo/a/*.* ${D}/foo/a
install -d ${D}/foo/b
install -m 0644 ${S}/foo/b/*.* ${D}/foo/b
install -d ${D}/foo/c
install -m 0644 ${S}/foo/c/*.* ${D}/foo/c
install -d ${D}/bar
install -m 0644 ${S}/bar/*.* ${D}/bar
install -d ${D}/bar/a
install -m 0644 ${S}/bar/a/*.* ${D}/bar/a
install -d ${D}/bar/a/bananas
install -m 0644 ${S}/bar/a/bananas/*.* ${D}/bar/a/bananas
}
Run Code Online (Sandbox Code Playgroud)
更像这个伪代码的东西:
do_install() {
for each subdir in ${S}/foo/
install subdir recursively to ${D}/foo/subdir …Run Code Online (Sandbox Code Playgroud) 我正在使用OpenEmbedded-Core并创建了一个优先级为6的自定义层.几个月的开发已经过去了,现在我想将我们图层的优先级提高到8,因为来自另一个优先级为7的图层的追加文件正在干扰追加我在我的图层中添加了文件.
我的问题是,如何生成图像中使用的配方和.bbappend文件列表?
我想在进行优先级更改之前和之后生成列表,以便我可以比较它们(希望有一个difftool)来查看是否发生了任何意外的副作用,例如来自其他层的重要附加文件可能会被忽略.
我正在使用Angstrom发行版的angstrom-v2014.12-yocto1.7分支.
[编辑]
我现在主要只是想确定如何列出我的图像实际使用的.bbappend文件.
可以使用@pnxs建议的"bitbake -g your-image-name"或者.manifest文件(我喜欢使用的)来查看软件包列表,在我的情况下,它位于deploy/glibc /下图像/ imagename /.我最初询问如何生成"配方文件"列表,但我认为包列表就足够了.
关于.bbappends,我有一个案例,由于图层优先级,我自己的.bbappend被忽略了.我对我的图层优先级进行了更改,现在想看看是否会导致我的图像中任何其他位置的.bbappend文件被忽略.根据我的理解,使用"bitbake-layers show- appends "作为建议列出所有 .bbappends而不仅仅是那些实际用于创建图像的内容,因此这不符合我的要求.
我有一条路径(例如,mysite.com / myapiendpoint)既要占用大量资源进行服务,又很容易被机器人滥用。我需要将对特定路径的访问速率进行限制,例如每个客户端IP地址每分钟10个请求。如何才能做到这一点?
我托管了一个EC2实例,其中包括CloudFront和AWS WAF。我启用了标准的“基于费率的规则”,但是对于我的应用程序来说,每个IP地址最低每分钟2,000个请求绝对不可用。
我正在考虑为此使用API网关,并且在过去使用过它,但是据我了解,它的速率限制不是基于IP地址,因此漫游器会简单地用尽限制,并且经常会拒绝合法用户使用端点。
我的网站不使用任何类型的会话,因此我认为我无法对服务器本身进行任何类型的速率限制。另外请记住,我的网站是单人操作,对AWS来说我是新手
如何将每个IP的使用限制为每分钟10个请求,最好是在WAF中?
经过更多研究,我想知道是否可以启用将标头转发到源(运行节点/ express)并使用速率限制程序包。这是可行的解决方案吗?
bitbake ×4
linux ×3
openembedded ×3
yocto ×3
c ×2
java ×2
recipe ×2
amazon-waf ×1
apache ×1
assembly ×1
embedded ×1
excel ×1
httpclient ×1
makefile ×1
optimization ×1
patch ×1
shell ×1
sql-server ×1
ssis ×1