THE INFORMATION IN THIS ARTICLE APPLIES TO:
SYMPTOM
In an EFT HA environment with a considerable amount of Event Rules, if the Event Rule name and description are long enough, it can exceed the MSMQ limitation of 64K. This can cause the EFT node to hang and eventually restart when trying to make a modification (such as when attempting to change the priority of an event rule).
Are there any specific recommendations for event rule name and/or description length to avoid issue?
WORKAROUND
The administration interface sends to EFT the following data structures in one message for each event rule:
boost::uuids::uuid id;
|
36 bytes
|
std::wstring rule_name;
|
strlen x 2 bytes
|
std::wstring rule_description;
|
strlen x 2 bytes
|
bool enabled;
|
1 byte
|
The message size is: (37 + (strlen(rule_name) + strlen(rule_description) * 2)) * rules_count
In the formula above, we suppose that "strlen(rule_name)" and "strlen(rule_description)" are the average from all event rule names and descriptions.
Additionally, the message is compressed before sending. MSMQ requires the message size to be less than 64k. It's a known MSMQ limitation.
MORE INFORMATION
Globalscape recommends that you leave the description field blank (no text) and make the Event Rule name no longer than 20 characters. If you follow our recommendation, you should be able to create, edit, and use about 4000 Event Rules without problems.
(40 rule name, 160 description)
|
31152
|
60672
|
90208
|
-
|
-
|
-
|
-
|
-
|
(40 rule name, 140 description)
|
28416
|
55456
|
82432
|
-
|
-
|
-
|
-
|
-
|
(40 rule name, 120 description)
|
25840
|
50336
|
74768
|
-
|
-
|
-
|
-
|
-
|
(40 rule name, 100 description)
|
23232
|
45200
|
66992
|
-
|
-
|
-
|
-
|
-
|
(40 rule name, 80 description)
|
20528
|
40000
|
59072
|
78320
|
-
|
-
|
-
|
-
|
(40 rule name, 60 description)
|
17904
|
34816
|
51360
|
67968
|
-
|
-
|
-
|
-
|
(40 rule name, 40 description)
|
15152
|
29392
|
43456
|
57360
|
71408
|
-
|
-
|
-
|
(20 rule name, 40 description)
|
12400
|
24032
|
35568
|
46864
|
58112
|
69456
|
-
|
-
|
(40 rule name, 0 description)
|
9456
|
18208
|
27534
|
35504
|
43856
|
52368
|
60752
|
69264
|
(20 rule name, 0 description)
|
8256
|
12544
|
18448
|
24272
|
30112
|
35952
|
41696
|
47440
|
Taking into account the table above and that the Event Rule names aren't random in real life (they are compressed five-fold) we can suggest the formula:
(37 + (strlen(rule_name) + strlen(rule_description) / 3)) * rules_count < 64K
e.g. If you want 1000 event rules, then:
(37 + (strlen(rule_name) + strlen(rule_description) / 3)) * 1000 < 64000
<=>
(37 + (strlen(rule_name) + strlen(rule_description) / 3)) < 64
<=>
(strlen(rule_name) + strlen(rule_description) / 3) < 27
<=>
strlen(rule_name) + strlen(rule_description) < 81