Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Humongous sessions

  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 4 months ago #145913 by DenisChenu
Replied by DenisChenu on topic Humongous sessions

bruce78 wrote:

DenisChenu wrote: Not currently. And remind : we still use $_SESSIOn : it's one of the reason the first pacge can take a long long long time to call.


Interesting... btw, do you think disk sessions are faster/more reliable than db sessions, all things being equal?

Depend ;)

If you can set session save path on a SSD or better in RAM ! file session is quickest sure.
If both are in HHD : file or SQL : i think file still quick ? because we use SQL for other than session
=> Maybe alternative soluton is to use another DB for session, for example a SQLite db (saved in RAM/SSD)

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
More
7 years 4 months ago #145916 by bruce78
Replied by bruce78 on topic Humongous sessions

DenisChenu wrote: => Maybe alternative soluton is to use another DB for session, for example a SQLite db (saved in RAM/SSD)


That's a neat idea... do you think something like that might reduce my first page load time from 10 seconds to something less?
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 4 months ago #145920 by DenisChenu
Replied by DenisChenu on topic Humongous sessions

bruce78 wrote:

DenisChenu wrote: => Maybe alternative soluton is to use another DB for session, for example a SQLite db (saved in RAM/SSD)


That's a neat idea... do you think something like that might reduce my first page load time from 10 seconds to something less?

Not tested, the no idea ....
But think the best solution is to save session in RAM only or SSD. Maybe in a SQLite DB on RAM is the better way.

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
More
7 years 4 months ago #145922 by bruce78
Replied by bruce78 on topic Humongous sessions
Cool... I'll let you know if I check this out...
The following user(s) said Thank You: DenisChenu
The topic has been locked.
More
7 years 4 months ago #146009 by bruce78
Replied by bruce78 on topic Humongous sessions

DenisChenu wrote: But think the best solution is to save session in RAM only or SSD. Maybe in a SQLite DB on RAM is the better way.
Denis


Ok, so I've been trying to get the sessions info to write to a sqlite db... I've been editing the config file but I've not had much luck, even though sqlite3 is running fine on the machine. Extracts from the config file are below but in brief...

If I leave
Code:
'class' => 'application.core.web.DbHttpSession',
as is under the
Code:
'db_sqlite' => array(
section, I get this error 500 message

Property "DbHttpSession.file" is not defined.


However, if I comment out
Code:
//'class' => 'application.core.web.DbHttpSession',
, the error message changes to

Object configuration must be an array containing a "class" element.


Below is the relevant extract of config.php and I've attached the full version in case I've missed anything else.

Do you know what I'm doing wrong or is LS not compatible with SQLite?

This thread suggests SQLite can be made to work as a core DB but these other threads ( one , two ) suggest SQLite isn't compatibe, but I suspect both are talking about using SQLite as the primary db and not for the session table...

Here's the extract from the config file...
Code:
return array(
  'components' => array(
    'db' => array(
      'connectionString' => 'mysql:host=localhost;port=3306;dbname=dbname;',
      'emulatePrepare' => true,
      'username' => 'user',
      'password' => 'pass',
      'charset' => 'utf8mb4',
      'tablePrefix' => 'lime_',
    ),
 
    // Uncomment the following line if you need table-based sessions
    'session' => array (
    'class' => 'application.core.web.DbHttpSession',
    'connectionID' => 'db_sqlite',
    'sessionTableName' => '{{sessions}}',
    ),
 
 
    'db_sqlite' => array(
      'file' => '/home/test.db',
      'connectionString' => 'sqlite:/home/test.db',
    //  'class' => 'application.core.web.DbHttpSession',
        'emulatePrepare' => true,
      'username' => '',
      'password' => '',
     // 'charset' => 'utf8mb4',
     //  'tablePrefix' => 'lime_',
    ),
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 4 months ago #146011 by DenisChenu
Replied by DenisChenu on topic Humongous sessions
Hi,

github.com/LimeSurvey/LimeSurvey/blob/ma...bHttpSession.php#L20

Did you try a var dump/die here ? To see if it's the good session ?

Seems OK according to Yii doc : www.yiiframework.com/doc/api/1.1/CDbHttp...#connectionID-detail

I don't see 'file' => '/home/test.db', in Yii doc about www.yiiframework.com/doc/api/1.1/CDbConnection : what did you add it ? You already have it in connectionString

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
More
7 years 4 months ago #146126 by bruce78
Replied by bruce78 on topic Humongous sessions

DenisChenu wrote: github.com/LimeSurvey/LimeSurvey/blob/ma...bHttpSession.php#L20
Did you try a var dump/die here ? To see if it's the good session ?


I don't understand how to try a var dump/die - can you help me out?

DenisChenu wrote: I don't see 'file' => '/home/test.db', in Yii doc about www.yiiframework.com/doc/api/1.1/CDbConnection : what did you add it ? You already have it in connectionString


I've removed 'file' => '/home/test.db' and I still get the same errors...

Would you suggest anything else at all?
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 4 months ago #146128 by DenisChenu
Replied by DenisChenu on topic Humongous sessions
Hi,

I do some test : OK, seem to using another db is broken with this configuration. I do some more test.

BUT : there are a solution :).
Code:
'session' => array (
      'class' => 'application.core.web.DbHttpSession',
      'connectionID' => null,
      'sessionTableName' => '{{sessions}}',
    ),

Unsure you need application.core.web.DbHttpSession, maybe you can test with system.web.CDbHttpSession too here.

Actually : if 'connectionID' => null, : Yii app create a sqlite db in /tmp/runtime/session-1.1.17.db

To put it elsewhere, currently usage of symbolic link but can be try with this solution.

I think LS don't try to create the db componenent, then use it but don't create . I take a look.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
More
7 years 4 months ago #146133 by jelo
Replied by jelo on topic Humongous sessions

bruce78 wrote: That's a neat idea... do you think something like that might reduce my first page load time from 10 seconds to something less?

10 seconds? Stick to SSD storage in combination with sessions-files. Wouldn't use Limesurvey without SSD. Till LimeSurvey is mostly use in small surveys with not many concurrent probands the session misdesign will be last for a long time.
There are other code parts which won't be technically challenged for a long time since not many users use the stuff. E.g. export functions crumble when handling bigger amount of data. Still waiting to see a big LSA export working. Perhaps I need 128 GB RAM on a webserver to do it ;-)

The meaning of the word "stable" for users
www.limesurvey.org/forum/development/117...ord-stable-for-users
The topic has been locked.
More
7 years 4 months ago #146137 by bruce78
Replied by bruce78 on topic Humongous sessions

DenisChenu wrote:

Code:
'session' => array (
      'class' => 'application.core.web.DbHttpSession',
      'connectionID' => null,
      'sessionTableName' => '{{sessions}}',
    ),
Actually : if 'connectionID' => null, : Yii app create a sqlite db in /tmp/runtime/session-1.1.17.db


Ok, thanks Denis, this worked as you said but sqlite didn't speed up the loading of the survey... if anything it was a bit slower and I'm also worried about using RAM for sessions as this won't allow people to save their responses if the machine needs to be rebooted, so I'm back to square one in that regard.

SSD is the next idea, as is going back to the 2.06 version....
The topic has been locked.
More
7 years 4 months ago #146138 by bruce78
Replied by bruce78 on topic Humongous sessions

jelo wrote: 10 seconds? Stick to SSD storage in combination with sessions-files. Wouldn't use Limesurvey without SSD.


This is the plan... the survey was also noticeably faster on 2.06 on the same hardware...

jelo wrote: Till LimeSurvey is mostly use in small surveys with not many concurrent probands the session misdesign will be last for a long time.


Sure, I can imagine that... I guess there are no plans to speed up the session design in version 3?
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 4 months ago #146147 by DenisChenu
Replied by DenisChenu on topic Humongous sessions
My /tmp/ and php/temp are already mounted on RAM : then use the default sqlite db : this is very longer for me ...

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.

Lime-years ahead

Online-surveys for every purse and purpose