Welcome to the LimeSurvey Community Forum

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

Humongous sessions

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
  • Away
  • 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
  • Away
  • 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
  • Away
  • 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.
  • DenisChenu
  • DenisChenu's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 4 months ago #146166 by DenisChenu
Replied by DenisChenu on topic Humongous sessions

bruce78 wrote:

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?

Big session is here since a lot of year then hard to remove (because a lot of functionality depend from this session).

Using cache seems a good idea to do some part of session : but
1. all this part must be cut before with User dependant VS not user dependant (we must cache only 'not user dependant')
2. A good obsolete system for caching

More than 2 week of complete work just for Expression Manager StartSurvey, and surely a lot of bug after.

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 #146186 by bruce78
Replied by bruce78 on topic Humongous sessions

DenisChenu wrote: My /tmp/ and php/temp are already mounted on RAM : then use the default sqlite db : this is very longer for me ...


I'm guessing your talking about using one of ramfs or tmpfs and mounting the directory in fstab? These two posts seem to go over this idea... is this what you're referring to?

DenisChenu wrote: Using cache seems a good idea to do some part of session : but
1. all this part must be cut before with User dependant VS not user dependant (we must cache only 'not user dependant')
2. A good obsolete system for caching
More than 2 week of complete work just for Expression Manager StartSurvey, and surely a lot of bug after.


I can imagine it would be a lot of work... I guess for larger surveys, the trick is to optimise the machine first which is probably easier right now...
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
7 years 4 months ago - 7 years 4 months ago #146190 by DenisChenu
Replied by DenisChenu on topic Humongous sessions

bruce78 wrote: I'm guessing your talking about using one of ramfs or tmpfs and mounting the directory in fstab?

/tmpfs, yes.

But sorry : on this test server : on a hd, then seems sqlite is slower than files ?

Currently i use for this server, default config of debian7 : session.save_path /var/lib/php5/sessions
I have memcache enable, maybe i can test a memcache session :)

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.
Last edit: 7 years 4 months ago by DenisChenu. Reason: fix quote
The topic has been locked.

Lime-years ahead

Online-surveys for every purse and purpose