|
|
|
[
Permlink
| « Hide
]
Robin Shen [22/Jan/14 09:44 AM]
Separate RESTful API handling logic into another server is not possible for now due to complex internal state of the build server (and this is the same reason why most CI solutions can not be clusterred). As to limit API calls based on heap size, it may not be feasible as often the out of memory issue is caused by GC thread taking too much time compared to normal tasks (GC overhead limit), not to mention that it is not easy to calculate the memory required by a configuration (highly depends on how many steps/repositories/... are defined) before actually getting them from database.
I know about this limitation, but still even trained people can make a failure and do certain call. Therefore it would be better to avoid running out of heap space when there is a large amount of configurations, one option can be:
1) Limit calls which is quite hard to do because the limit is based as well on heap/memory settings 2) Separate the two servers so that you RestAPI is not influencing performance of main server You want a stable as possible system and not require to restart server due to fact that someone did a surge of wrong calls on restapi. Splitting configurations to multiple servers is not very user friendly in a large scale project, as you would still want to have one main entry point for end users (what is behind the scene happening should be transparent). Instead of putting limit on various API calls (which is somewhat difficult to determine in what situation to limit), QB 5.1.7 has an extra group permission to control if the group can access the system via RESTful API. Therefore, you may use this option to limit RESTful API calls to trained and trusted users. Also this normally happens when there are a lot of configurations, if you have too many configurations running on a single server, please consider to split the configurations to multiple servers to avoid potential performance issue.
Also consider option to separate the two servers so that you have full control on which server is causing problems.
|