Skip to content

Commit

Permalink
Improve performance under load
Browse files Browse the repository at this point in the history
- Use SilentCircle chatterbox ETS table mod that addresses performance
  and unbounded memory growth
- Decrease default burst size to 50
- Decrease default burst interval to 50 ms
- Update documentation to reflect changes
- Rewrite parts of apns_erlv3_session.erl to handle load and errors
  better
- Modify CT tests to do a better job of flood testing (add
  sync_flood_and_disconnect test)
- Modify CT tests to work with JWT auths, together with apns_erl_sim JWT
  support and apns_tools JWT token generation
- Fix dialyzer warnings
- Various other small improvements
- Fix recovery when connection is broken
- Regen docs
  • Loading branch information
Edwin Fine committed Apr 20, 2017
1 parent 59b3907 commit 35e21e4
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 61 deletions.
9 changes: 4 additions & 5 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
scpf (2.0.3~rc2) unstable; urgency=medium
scpf (2.0.3~rc3) unstable; urgency=medium

* Version 2.0.3

* Improve performance under load
- Merge in chatterbox PR #106
(https://github.com/joedevivo/chatterbox/pull/106) that fixes
unbounded memory growth
- Use SilentCircle chatterbox ETS table mod that addresses performance
and unbounded memory growth
- Decrease default burst size to 50
- Decrease default burst interval to 50 ms
- Update documentation to reflect changes
Expand All @@ -19,7 +18,7 @@ scpf (2.0.3~rc2) unstable; urgency=medium
- Various other small improvements
* Fix recovery when connection is broken.

-- Edwin Fine <[email protected]> Tue, 18 Apr 2017 13:22:18 -0400
-- Edwin Fine <[email protected]> Thu, 20 Apr 2017 09:54:36 -0400

scpf (2.0.2) unstable; urgency=medium

Expand Down
100 changes: 50 additions & 50 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Copyright (c) 2016 Silent Circle

__Version:__ Apr 18 2017 13:14:00
__Version:__ Apr 20 2017 10:04:32

__Authors:__ Edwin Fine ([`[email protected]`](mailto:[email protected])).

Expand Down Expand Up @@ -1079,53 +1079,53 @@ function url(tag) { var o=document.getElementById(tag); return o ? o.href : '#'+


<table width="100%" border="0" summary="list of modules">
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_cert.md" class="module">apns_cert</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_erlv3_app.md" class="module">apns_erlv3_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_erlv3_session.md" class="module">apns_erlv3_session</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_erlv3_session_sup.md" class="module">apns_erlv3_session_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_json.md" class="module">apns_json</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_jwt.md" class="module">apns_jwt</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_lib.md" class="module">apns_lib</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_lib_http2.md" class="module">apns_lib_http2</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_recs.md" class="module">apns_recs</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/apns_types.md" class="module">apns_types</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/gcm_erl.md" class="module">gcm_erl</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/gcm_erl_app.md" class="module">gcm_erl_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/gcm_erl_session.md" class="module">gcm_erl_session</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/gcm_erl_session_sup.md" class="module">gcm_erl_session_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/gcm_erl_util.md" class="module">gcm_erl_util</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/gcm_json.md" class="module">gcm_json</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/gcm_req_sched.md" class="module">gcm_req_sched</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_config.md" class="module">sc_config</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_priority_queue.md" class="module">sc_priority_queue</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push.md" class="module">sc_push</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_app.md" class="module">sc_push_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_lib.md" class="module">sc_push_lib</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_lib_app.md" class="module">sc_push_lib_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_lib_sup.md" class="module">sc_push_lib_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_reg_api.md" class="module">sc_push_reg_api</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_reg_db.md" class="module">sc_push_reg_db</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_reg_resource.md" class="module">sc_push_reg_resource</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_reg_wm_device.md" class="module">sc_push_reg_wm_device</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_reg_wm_service.md" class="module">sc_push_reg_wm_service</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_reg_wm_tag.md" class="module">sc_push_reg_wm_tag</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_req_mgr.md" class="module">sc_push_req_mgr</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_sup.md" class="module">sc_push_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_svc_apnsv3.md" class="module">sc_push_svc_apnsv3</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_svc_gcm.md" class="module">sc_push_svc_gcm</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_svc_null.md" class="module">sc_push_svc_null</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_svc_null_srv.md" class="module">sc_push_svc_null_srv</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_top.md" class="module">sc_push_top</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_common.md" class="module">sc_push_wm_common</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_helper.md" class="module">sc_push_wm_helper</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_send_device.md" class="module">sc_push_wm_send_device</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_send_svc_appid_tok.md" class="module">sc_push_wm_send_svc_appid_tok</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_send_svc_tok.md" class="module">sc_push_wm_send_svc_tok</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_send_tag.md" class="module">sc_push_wm_send_tag</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_sup.md" class="module">sc_push_wm_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_push_wm_version.md" class="module">sc_push_wm_version</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_types.md" class="module">sc_types</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_util.md" class="module">sc_util</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_util_app.md" class="module">sc_util_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/master/doc/sc_util_srv.md" class="module">sc_util_srv</a></td></tr></table>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_cert.md" class="module">apns_cert</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_erlv3_app.md" class="module">apns_erlv3_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_erlv3_session.md" class="module">apns_erlv3_session</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_erlv3_session_sup.md" class="module">apns_erlv3_session_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_json.md" class="module">apns_json</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_jwt.md" class="module">apns_jwt</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_lib.md" class="module">apns_lib</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_lib_http2.md" class="module">apns_lib_http2</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_recs.md" class="module">apns_recs</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/apns_types.md" class="module">apns_types</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/gcm_erl.md" class="module">gcm_erl</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/gcm_erl_app.md" class="module">gcm_erl_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/gcm_erl_session.md" class="module">gcm_erl_session</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/gcm_erl_session_sup.md" class="module">gcm_erl_session_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/gcm_erl_util.md" class="module">gcm_erl_util</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/gcm_json.md" class="module">gcm_json</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/gcm_req_sched.md" class="module">gcm_req_sched</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_config.md" class="module">sc_config</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_priority_queue.md" class="module">sc_priority_queue</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push.md" class="module">sc_push</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_app.md" class="module">sc_push_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_lib.md" class="module">sc_push_lib</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_lib_app.md" class="module">sc_push_lib_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_lib_sup.md" class="module">sc_push_lib_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_reg_api.md" class="module">sc_push_reg_api</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_reg_db.md" class="module">sc_push_reg_db</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_reg_resource.md" class="module">sc_push_reg_resource</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_reg_wm_device.md" class="module">sc_push_reg_wm_device</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_reg_wm_service.md" class="module">sc_push_reg_wm_service</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_reg_wm_tag.md" class="module">sc_push_reg_wm_tag</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_req_mgr.md" class="module">sc_push_req_mgr</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_sup.md" class="module">sc_push_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_svc_apnsv3.md" class="module">sc_push_svc_apnsv3</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_svc_gcm.md" class="module">sc_push_svc_gcm</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_svc_null.md" class="module">sc_push_svc_null</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_svc_null_srv.md" class="module">sc_push_svc_null_srv</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_top.md" class="module">sc_push_top</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_common.md" class="module">sc_push_wm_common</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_helper.md" class="module">sc_push_wm_helper</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_send_device.md" class="module">sc_push_wm_send_device</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_send_svc_appid_tok.md" class="module">sc_push_wm_send_svc_appid_tok</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_send_svc_tok.md" class="module">sc_push_wm_send_svc_tok</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_send_tag.md" class="module">sc_push_wm_send_tag</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_sup.md" class="module">sc_push_wm_sup</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_push_wm_version.md" class="module">sc_push_wm_version</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_types.md" class="module">sc_types</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_util.md" class="module">sc_util</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_util_app.md" class="module">sc_util_app</a></td></tr>
<tr><td><a href="http://github.com/SilentCircle/scpf/blob/fix/use-chatterbox-ets-tables/doc/sc_util_srv.md" class="module">sc_util_srv</a></td></tr></table>

Loading

0 comments on commit 35e21e4

Please sign in to comment.