[PATCH 57300] mod_session save optimization

2015-08-20 Thread Paul Spangler

Hello,

The bug report contains a more detailed explanation of the patch, but 
there are some points I thought might lead to some discussion.


First a quick summary of the issue: mod_session writes out the session 
every request even if there aren't any changes to the data. This makes 
some sense when the session has a max age and the expiry value needs to 
be refreshed. However, there isn't likely to be much benefit in 
repeatedly refreshing the expiry by a few milliseconds, possibly 
generating database traffic each time. This patch proposes a new 
directive to define an interval of time where the expiry doesn't need to 
be refreshed if there are no session data changes.


1. We had a hard time coming up with a name for the directive. The patch 
goes with SessionExpiryUpdateInterval, being the interval of time that 
may pass before updating the expiry value is required. I don't know if 
there are any existing directives with a similar function that we should 
mimic instead.


2. The patch includes a behavior change independent of the new directive 
when using sessions without a max age: if the data hasn't changed, don't 
write out the session. Most noticeably, this means new sessions that 
never get data are discarded without being saved.


3. I wasn't sure how best to add tests for a new directive since the 
test server won't start if the directive is missing. The patch that 
includes the test changes look for the 2.5 version to know the new 
directive is there, and will require a modification if/when the 
directive is back-ported to 2.4 to enable the new tests.


https://bz.apache.org/bugzilla/show_bug.cgi?id=57300

Thanks for your consideration.
--
Paul Spangler
LabVIEW R&D
National Instruments


Re: [PATCH 57300] mod_session save optimization

2015-09-02 Thread Paul Spangler

On 8/20/2015 4:58 PM, Paul Spangler wrote:

Hello,

The bug report contains a more detailed explanation of the patch, but
there are some points I thought might lead to some discussion.

First a quick summary of the issue: mod_session writes out the session
every request even if there aren't any changes to the data. This makes
some sense when the session has a max age and the expiry value needs to
be refreshed. However, there isn't likely to be much benefit in
repeatedly refreshing the expiry by a few milliseconds, possibly
generating database traffic each time. This patch proposes a new
directive to define an interval of time where the expiry doesn't need to
be refreshed if there are no session data changes.

1. We had a hard time coming up with a name for the directive. The patch
goes with SessionExpiryUpdateInterval, being the interval of time that
may pass before updating the expiry value is required. I don't know if
there are any existing directives with a similar function that we should
mimic instead.

2. The patch includes a behavior change independent of the new directive
when using sessions without a max age: if the data hasn't changed, don't
write out the session. Most noticeably, this means new sessions that
never get data are discarded without being saved.

3. I wasn't sure how best to add tests for a new directive since the
test server won't start if the directive is missing. The patch that
includes the test changes look for the 2.5 version to know the new
directive is there, and will require a modification if/when the
directive is back-ported to 2.4 to enable the new tests.

https://bz.apache.org/bugzilla/show_bug.cgi?id=57300

Thanks for your consideration.


Bump. Anyone interested?
--
Paul Spangler
LabVIEW R&D
National Instruments


Re: [PATCH 57300] mod_session save optimization

2015-09-14 Thread Paul Spangler

On 8/20/2015 4:58 PM, Paul Spangler wrote:

Hello,

The bug report contains a more detailed explanation of the patch, but
there are some points I thought might lead to some discussion.

First a quick summary of the issue: mod_session writes out the session
every request even if there aren't any changes to the data. This makes
some sense when the session has a max age and the expiry value needs to
be refreshed. However, there isn't likely to be much benefit in
repeatedly refreshing the expiry by a few milliseconds, possibly
generating database traffic each time. This patch proposes a new
directive to define an interval of time where the expiry doesn't need to
be refreshed if there are no session data changes.

1. We had a hard time coming up with a name for the directive. The patch
goes with SessionExpiryUpdateInterval, being the interval of time that
may pass before updating the expiry value is required. I don't know if
there are any existing directives with a similar function that we should
mimic instead.

2. The patch includes a behavior change independent of the new directive
when using sessions without a max age: if the data hasn't changed, don't
write out the session. Most noticeably, this means new sessions that
never get data are discarded without being saved.

3. I wasn't sure how best to add tests for a new directive since the
test server won't start if the directive is missing. The patch that
includes the test changes look for the 2.5 version to know the new
directive is there, and will require a modification if/when the
directive is back-ported to 2.4 to enable the new tests.

https://bz.apache.org/bugzilla/show_bug.cgi?id=57300

Thanks for your consideration.


Quick ping on this.
--
Paul Spangler
LabVIEW R&D
National Instruments


Re: [PATCH 57300] mod_session save optimization

2015-09-24 Thread Paul Spangler

On 8/20/2015 4:58 PM, Paul Spangler wrote:

Hello,

The bug report contains a more detailed explanation of the patch, but
there are some points I thought might lead to some discussion.

First a quick summary of the issue: mod_session writes out the session
every request even if there aren't any changes to the data. This makes
some sense when the session has a max age and the expiry value needs to
be refreshed. However, there isn't likely to be much benefit in
repeatedly refreshing the expiry by a few milliseconds, possibly
generating database traffic each time. This patch proposes a new
directive to define an interval of time where the expiry doesn't need to
be refreshed if there are no session data changes.

1. We had a hard time coming up with a name for the directive. The patch
goes with SessionExpiryUpdateInterval, being the interval of time that
may pass before updating the expiry value is required. I don't know if
there are any existing directives with a similar function that we should
mimic instead.

2. The patch includes a behavior change independent of the new directive
when using sessions without a max age: if the data hasn't changed, don't
write out the session. Most noticeably, this means new sessions that
never get data are discarded without being saved.

3. I wasn't sure how best to add tests for a new directive since the
test server won't start if the directive is missing. The patch that
includes the test changes look for the 2.5 version to know the new
directive is there, and will require a modification if/when the
directive is back-ported to 2.4 to enable the new tests.

https://bz.apache.org/bugzilla/show_bug.cgi?id=57300

Thanks for your consideration.


Quick ping on this.
--
Paul Spangler
LabVIEW R&D
National Instruments


Re: [PATCH 57300] mod_session save optimization

2015-10-15 Thread Paul Spangler

On 8/20/2015 4:58 PM, Paul Spangler wrote:

Hello,

The bug report contains a more detailed explanation of the patch, but
there are some points I thought might lead to some discussion.

First a quick summary of the issue: mod_session writes out the session
every request even if there aren't any changes to the data. This makes
some sense when the session has a max age and the expiry value needs to
be refreshed. However, there isn't likely to be much benefit in
repeatedly refreshing the expiry by a few milliseconds, possibly
generating database traffic each time. This patch proposes a new
directive to define an interval of time where the expiry doesn't need to
be refreshed if there are no session data changes.

1. We had a hard time coming up with a name for the directive. The patch
goes with SessionExpiryUpdateInterval, being the interval of time that
may pass before updating the expiry value is required. I don't know if
there are any existing directives with a similar function that we should
mimic instead.

2. The patch includes a behavior change independent of the new directive
when using sessions without a max age: if the data hasn't changed, don't
write out the session. Most noticeably, this means new sessions that
never get data are discarded without being saved.

3. I wasn't sure how best to add tests for a new directive since the
test server won't start if the directive is missing. The patch that
includes the test changes look for the 2.5 version to know the new
directive is there, and will require a modification if/when the
directive is back-ported to 2.4 to enable the new tests.

https://bz.apache.org/bugzilla/show_bug.cgi?id=57300

Thanks for your consideration.


Bump in case anyone is interested now that the list has died down a bit.

--
Paul Spangler
LabVIEW R&D
National Instruments


Re: [PATCH 57300] mod_session save optimization

2015-10-16 Thread Jacob Champion

On 10/15/2015 01:53 PM, Paul Spangler wrote:

Bump in case anyone is interested now that the list has died down a bit.


I'm a little biased :) but I am still interested.

From a practical angle, Paul's patch makes session-based applications 
usable with databases that have more expensive writes (SQLite being a 
key example). Without this feature, we saw the server's performance 
crater when a moderate number (100's) of requests were made in a short 
period of time.


From a technical angle, it doesn't make sense to me that every request 
results in a write to the database when using mod_session_dbd. As it 
stands now, I don't feel like mod_session is production-ready when 
combined with a SQLite backend.


From an emotional angle, Paul has been patiently pinging the list with 
no response for two months now. Surely he deserves some reply, even if 
it's just an explanation of why there is no interest in the feature? It 
feels like mod_session and friends need some love.


--Jacob


Re: [PATCH 57300] mod_session save optimization

2015-10-16 Thread Yann Ylavic
Hello Paul,

sorry for the delay...

On Thu, Oct 15, 2015 at 10:53 PM, Paul Spangler  wrote:
> On 8/20/2015 4:58 PM, Paul Spangler wrote:
>>
>> The bug report contains a more detailed explanation of the patch, but
>> there are some points I thought might lead to some discussion.

Didn't look at the details yet, but the approach looks sensible.
The test suite is appreciated too!

>>
> Bump in case anyone is interested now that the list has died down a bit.

Will take a closer look and comment/commit soon, reporting on bugzilla.
Thanks for the patch anyway, and your perseverence :)

Regards,
Yann.