2017-12-22 175 views
11

Chúng tôi sử dụng apache ignite v2.2 làm cache ngủ đông cấp 2 trong ứng dụng grails. Chúng tôi có 4 nút cluster với 10G RAM mỗi. Nút đầu tiên bắt đầu ok. Nhưng sau đó bị treo. Đôi khi thứ 2 đôi khi thứ 3 hoặc thứ 4. Khởi động thành công cũng xảy ra nhưng rất hiếm. Ứng dụng luôn bị treo ở cùng một nơi:Apache Đốt cháy khi khởi động

"host-startStop-1" #45 daemon prio=5 os_prio=0 tid=0x00007f7cac004800 nid=0x3d44 waiting on condition [0x00007f7cfdd81000] 
    java.lang.Thread.State: TIMED_WAITING (parking) 
     at sun.misc.Unsafe.park(Native Method) 
     at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:338) 
     at org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:216) 
     at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:158) 
     at org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:150) 
     at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.onKernalStart(GridCachePartitionExchangeManager.java:551) 
     at org.apache.ignite.internal.processors.cache.GridCacheProcessor.onKernalStart(GridCacheProcessor.java:843) 
     at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1040) 
     at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1896) 
     at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1648) 
     - locked <0x00000007890a1198> (a org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance) 
     at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1076) 
     at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:596) 
     at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:520) 
     at org.apache.ignite.Ignition.start(Ignition.java:322) 

Tất cả các nút khác bị khóa trong quá trình này. Cấu hình:

IgniteConfiguration configuration = new IgniteConfiguration() 
     List<CacheConfiguration> cacheConfigurations = [] 
     for (String name : caches) { 
      CacheConfiguration cacheConfiguration = new CacheConfiguration<>() 
      cacheConfiguration.setCacheMode(CacheMode.REPLICATED) 
      cacheConfiguration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL) 
      cacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_ASYNC) 
      cacheConfiguration.setName(name) 
      cacheConfiguration.onheapCacheEnabled = true 
      cacheConfiguration.evictionPolicy = new LruEvictionPolicy() 
      cacheConfiguration.memoryPolicyName = MEMORY_POLICY 
      cacheConfigurations.add(cacheConfiguration) 
     } 
     for (String name : ['org.hibernate.cache.spi.UpdateTimestampsCache', 
          'org.hibernate.cache.internal.StandardQueryCache']) { 
      CacheConfiguration cacheConfiguration = new CacheConfiguration<>() 
      cacheConfiguration.setCacheMode(CacheMode.REPLICATED) 
      cacheConfiguration.setAtomicityMode(CacheAtomicityMode.ATOMIC) 
      cacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_ASYNC) 
      cacheConfiguration.setName(name) 
      cacheConfiguration.onheapCacheEnabled = true 
      cacheConfiguration.evictionPolicy = new LruEvictionPolicy() 
      cacheConfiguration.memoryPolicyName = MEMORY_POLICY 
      cacheConfigurations.add(cacheConfiguration) 
     } 
     configuration.setCacheConfiguration(cacheConfigurations.toArray(new CacheConfiguration[cacheConfigurations.size()])) 
     configuration.peerClassLoadingEnabled = true 
     configuration.igniteInstanceName = Constants.IGNITE_GRID 
     configuration.gridLogger = new Slf4jLogger() 
     MemoryConfiguration memoryConfiguration = new MemoryConfiguration() 
     memoryConfiguration.defaultMemoryPolicySize = 1 * 1024 * 1024 * 1024l 
     MemoryPolicyConfiguration l2CachePolicy = new MemoryPolicyConfiguration() 
     l2CachePolicy.name = MEMORY_POLICY 
     l2CachePolicy.setMaxSize(4 * 1024 * 1024 * 1024l) 
     l2CachePolicy.pageEvictionMode = DataPageEvictionMode.RANDOM_LRU 
     memoryConfiguration.setMemoryPolicies(l2CachePolicy) 
     configuration.memoryConfiguration = memoryConfiguration 
     int[] eventTypes = new int[1] 
     eventTypes[0] = EventType.EVT_NODE_FAILED 
     configuration.includeEventTypes = eventTypes 
     Map<IgnitePredicate<? extends Event>, int[]> listeners = new HashedMap() 
     listeners.put(new NodeFailedEventListener(), eventTypes) 
     configuration.localEventListeners = listeners 
     TcpCommunicationSpi commSpi = new TcpCommunicationSpi() 
     commSpi.slowClientQueueLimit = 1000 
     commSpi.messageQueueLimit = 5000 
     configuration.communicationSpi = commSpi 
     TcpDiscoverySpi discoverySpi = new TcpDiscoverySpi() 
     configuration.discoverySpi = discoverySpi 
     if (grailsApplication.config.grails?.plugin?.awssdk?.accessKey && Env.igniteS3Bucket) { 
      TcpDiscoveryS3IpFinder awsIpFinder = new TcpDiscoveryS3IpFinder() 
      awsIpFinder.setBucketName(Env.igniteS3Bucket) 
      AWSCredentials awsCredentials = new BasicAWSCredentials(grailsApplication.config.grails.plugin.awssdk.accessKey, 
        grailsApplication.config.grails.plugin.awssdk.secretKey) 
      awsIpFinder.setAwsCredentials(awsCredentials) 
      discoverySpi.ipFinder = awsIpFinder 
     } else { 
      TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder() 
      ipFinder.setAddresses(["127.0.0.1:47500"]) 
      discoverySpi.ipFinder = ipFinder 
     } 
     configuration.classLoader = grailsApplication.classLoader 
     ignite = Ignition.start(configuration) 

EDIT

Full thread dump of failed node

Full thread dump of succeed node

+1

Không thể hiểu bất cứ điều gì từ kết xuất chuỗi của một chuỗi. Xin vui lòng chia sẻ các bản ghi đầy đủ và các bãi chứa chuỗi từ tất cả các nút –

+0

Tôi đã thêm các chuỗi đầy đủ của các nút không thành công và đã thành công –

Trả lời

0

Nếu bạn muốn chạy hơn 1 nút trên một máy vật lý, tôi muốn giới thiệu cấu hình MemoryConfiguration (vì theo mặc định, trong phiên bản 2.2 Ignite sẽ yêu cầu 80% RAM vật lý cho một nút) hoặc cập nhật lên phiên bản 2.3 (giá trị mặc định đã giảm xuống còn 20%)

+0

Tôi chỉ có 1 nút trên mỗi máy. Và tôi đã cấu hình MemoryConfiguration. –

+1

sau đó vui lòng chạy Ignite ở chế độ không yên tĩnh (-DIGNITE_QUIET = false hoặc "-v") và chia sẻ toàn bộ nhật ký –

+1

Không biết cách nhận nhật ký đầy đủ. -DIGNITE_QUIET = false không tạo ra bất kỳ nhật ký nào –

0

Bạn có thể thử với bộ nhớ cache không chứa dấu chấm '.' trong tên của họ? Điều này được biết là gây ra vấn đề chậm trễ.

+0

No. Chúng tôi sử dụng ignite như bộ nhớ cache cấp 2 ngủ đông. Chúng tôi không thể chọn tên bộ nhớ cache. –

+1

@DmitryS nhưng bạn có thể ít nhất là thử gỡ bỏ các lỗi này không? – alamar

Các vấn đề liên quan