我正在尝试使用Java SDK设置一些自定义AWS CloudWatch指标.
我似乎无法在描述如何获取某些数据的文档中找到任何内容,也不需要包含哪些数据.
MetricDatum datum = new MetricDatum()
.withDimensions(
new Dimension()
.withName("InstanceType").withValue(/* 1 */),
new Dimension()
.withName("InstanceId").withValue(/* 2 */)
/* 3 */
.withMetricName("My metric").withTimestamp(new Date())
.withUnit("Percent").withValue(new Double(55.0));
Run Code Online (Sandbox Code Playgroud)
所以,问题(对于上面代码中的每个注释数字):
对于#1,我已经看到我可以对http://169.254.169.254/latest/meta-data/instance-id进行常规HTTP调用以获取实例ID,但我希望这样做所有通过AWS SDK,如果有可用的方法.
与这个问题密切相关:How to use HttpClient with multithreaded operation? ,我想知道 apache HttpAsyncClient 是否是线程安全的,或者它是否也需要使用 MultiThreadedHttpConnectionManager 或 ThreadSafeClientConnManager。
如果确实需要这样的连接管理器,异步库中是否存在?
我能够在异步库中找到 PoolingClientAsyncConnectionManager,但我不确定这是否是我需要的。
或者,我正在考虑使用 ThreadLocal 为每个线程创建一个 HttpAsyncClient 对象。
请注意,与我之前引用的问题不同,我需要状态在会话之间保持独立,即使多个会话访问同一个域。如果Cookie在会话1套,饼干应该不会是会议2。出于这个原因可见,我也考虑每一个请求创建一个全新的HttpAsyncClient对象,但我得到的印象应该有更好的办法.
谢谢。
我正在尝试运行我认为对相当大的数据集进行简单查询,并且需要很长时间才能执行 - 它在"发送数据"状态中停留3-4小时或更长时间.
该表如下所示:
CREATE TABLE `transaction` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`uuid` varchar(36) NOT NULL,
`userId` varchar(64) NOT NULL,
`protocol` int(11) NOT NULL,
... A few other fields: ints and small varchars
`created` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `uuid` (`uuid`),
KEY `userId` (`userId`),
KEY `protocol` (`protocol`),
KEY `created` (`created`)
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4 COMMENT='Transaction audit table'
Run Code Online (Sandbox Code Playgroud)
查询在这里:
select protocol, count(distinct userId) as count from transaction
where created > '2012-01-15 23:59:59' and created …Run Code Online (Sandbox Code Playgroud)