Atea - Hero's Grave

面向对象,开源,框架,敏捷,云计算,NoSQL,商业智能,编程思想。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  40 随笔 :: 0 文章 :: 28 评论 :: 0 Trackbacks

2011年3月17日 #

有2台linux服务器,一台布apache(A)和tomcat应用程序(B),一台布solr管理平台(C)。

发现的bug为:
前台访问A,A转发给B,B再访问C,访问失败。

经试验,web server和app server不能放到一台服务器上,否则通过apache代理,app server调用solrj会因获取不到连接而失败。

目前跟踪调查到
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer
->
org.apache.commons.httpclient.HttpClient
->
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager

httpclient的版本是3.1,怀疑是MultiThreadedHttpConnectionManager自定义的池出的问题。
网上搜了搜,没什么相关资料。最近太忙,没精力刨根问底了。暂时改了solrj源码,使用了默认的new HttpClient()
有谁也遇到类似问题并解决了,或知道怎么回事,麻烦告知一下。

PS:
solr更新这么迅速,为啥不把httpclient升级一下

posted @ 2012-02-29 16:45 Atea 阅读(321) | 评论 (0)编辑 收藏

最近又折腾起了activemq。见Failover的文档没有中文的,就顺手给翻了:

Apache ActiveMQ - The Failover Transport Options

Option Name Default Value Description
initialReconnectDelay 10
第一次重连的时间间隔(毫秒)
maxReconnectDelay 30000
最长重连的时间间隔(毫秒)
useExponentialBackOff true
重连时间间隔是否以指数形式增长
backOffMultiplier 2.0
指数的值
maxReconnectAttempts -1 >= AMQ v5.6
0 < AMQ v5.6,
自版本5.6起:-1为默认值,代表不限重试次数;0代表从不重试(只尝试连接一次,并不重连)
5.6以前的版本:0为默认值,代表不限重试次数
所有版本:如果设置为大于0的数,代表最大重试次数
startupMaxReconnectAttempts 0
初始化时的最大重连次数。一旦连接上,将使用maxReconnectAttempts的配置
randomize true
使用随机链接(注:达到负载均衡的目的)
backup false
提前初始化一个未使用连接,以便进行快速失败转移
timeout -1
设置发送操作的总计最大超时时间(毫秒)
trackMessages false
在重连过程中缓存消息
maxCacheSize 131072
缓存的最大字节数
updateURIsSupported true
设定是否可以动态修改broker uri(自版本5.4起)

posted @ 2011-12-28 10:35 Atea 阅读(2963) | 评论 (0)编辑 收藏

     摘要: 标题起的有些大,仅代表自己和身边一些人从业这几年来的感悟:P  阅读全文
posted @ 2011-09-01 15:31 Atea 阅读(2749) | 评论 (5)编辑 收藏

现象:
JDBC执行 UPDATE DB_NAME.TABLE_NAME SET COLUMN_NAME xxxx;
然后操作并不计入mysql binlog,主从复制失效。

发生条件:
1、MySQL 5.1 (理论上5.1+)
2、SQL语句指定库名/跨库执行,之前没有指到这个库下面(use DATABASE_NAME )
3、MySQL主从配置没有加--replicate-wild-do-table=db_name.%

解决办法:
在主从配置文件内加入参数
--replicate-wild-do-table=db_name.%

参考文档:
MySQL官方文档
posted @ 2011-06-24 16:47 Atea 阅读(519) | 评论 (0)编辑 收藏

     摘要: VJET JavaScript IDE 是一个Eclipse插件,提供了整套的Javascript开发环境:语法提示、自动补全、高亮、编辑纠错、debug等。
比起Aptana来,VJET更加轻量,速度也更快。  阅读全文
posted @ 2011-06-08 13:48 Atea 阅读(10345) | 评论 (1)编辑 收藏

     摘要: JDK1.5引入的泛型,减少了类型强转的代码,增加了编译检查,提高了代码的健壮性。
但在某些情况,泛型检查会出乎意料的“丢失”,由此可引发难以发现的bug。  阅读全文
posted @ 2011-05-31 10:31 Atea 阅读(679) | 评论 (0)编辑 收藏

如果别人只是读取数据,FOR UPDATE就不会锁定资源不让他们读
sum,count等函数为表锁
null不等于任何值,包括它自己
尽量不要使用LONG型字段,而考虑使用CLOB
与不可重复读的区别在于:在幻像读中,已经读取的数据不会改变,只是与以前相比,会有更多的数据满足你的查询条件
客户端发出的语句(如INSERT INTO)是原子性的
应慎用IMMEDIATE约束。一条语句可能会使表中的各行暂时“不一致”,这是很自然的。
一般认为,用更新级联来修改主键是很不好的做法
应手动给外键加索引,否则会引起子表的表锁。
优化期会对视图的来源表使用查询。所以,对视图加索引不如直接对来源表进行索引优化。

无法通过频繁提交来“节省”undo空间,所以没有必要在循环中提交。
1、事务的粒度(时长)应设计的尽可能小(短)
2、事务不是稀缺资源,所以不要在循环中提交
以上2个说法都正确,并不矛盾:
Re1: 事务过大,会在rollback时消耗大量资源
Re2: 循环提交会频繁IO

性能调优,应首先尝试减少查询的运行时间,其次再考虑设置参数等。
查询中最好手动加上order by
索引组织表(IOT)是存储在索引结构中的表,适合OLAP应用。IOT不存在主键的空间开销,因为索引就是输据。
位图索引适用于高度重复而且通常只读的数据(在OLTP中慎用,涉及到并发性)。在读密集的环境中能很好的工作,但极不适用于写密集环境。
仅当要通过索引访问表中很少的一部分行(很小的一个百分比)时,才使用B*索引。每个唯一约束应该至少有一个确实唯一的NOT NULL列。B*树索引不会对一个完全为NULL的项加索引。

http://atealxt.appspot.com/article/20110317/book_read_note_oracle_database_9i10gand11g_programming_techniques_and_solutions.html
posted @ 2011-03-17 22:19 Atea 阅读(440) | 评论 (0)编辑 收藏