<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Hi all,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Do you despair when you see the following periodically in “top” when a starman worker is recreated ?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND<o:p></o:p></p><p class=MsoNormal>9529 my-koha  20   0  460108 197212  17172 R 100.0  0.4   0:03.41 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Or the following in top when you install koha-common package or restart the koha-common service?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>11101 1-koha  20   0  447232 193320  16076 R   10.6  0.4   0:09.09 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal>11168 1-koha  20   0  447240 193264  16056 R   10.6  0.4   0:08.72 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal>11306 2-koha  20   0  447220 193148  16000 R   10.6  0.4   0:08.07 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal>11543 2-koha  20   0  447232 193036  15828 R   10.6  0.4   0:07.07 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal>11784 3-koha  20   0  441536 189664  16172 R   10.6  0.4   0:06.04 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal>11830 3-koha  20   0  439548 187212  15748 R   10.6  0.4   0:05.82 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal>11831 4-koha  20   0  438620 186344  15748 R   10.6  0.4   0:05.81 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal>11853 4-koha  20   0  437680 185672  16000 R   10.6  0.4   0:05.79 /usr/share/koha/api/v1/app.pl<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Well, I still have a lot of investigation left to do, but I notice 1 place that a lot of time taken is here (per worker):<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    my $validator = JSON::Validator::OpenAPI::Mojolicious->new;<o:p></o:p></p><p class=MsoNormal>    $validator->load_and_validate_schema(<o:p></o:p></p><p class=MsoNormal>        $self->home->rel_file("api/v1/swagger/swagger.json"),<o:p></o:p></p><p class=MsoNormal>        {<o:p></o:p></p><p class=MsoNormal>          allow_invalid_ref  => 1,<o:p></o:p></p><p class=MsoNormal>        }<o:p></o:p></p><p class=MsoNormal>      );<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    push @{$self->routes->namespaces}, 'Koha::Plugin';<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    my $spec = $validator->schema->data;<o:p></o:p></p><p class=MsoNormal>    $self->plugin(<o:p></o:p></p><p class=MsoNormal>        'Koha::REST::Plugin::PluginRoutes' => {<o:p></o:p></p><p class=MsoNormal>            spec      => $spec,<o:p></o:p></p><p class=MsoNormal>            validator => $validator<o:p></o:p></p><p class=MsoNormal>        }<o:p></o:p></p><p class=MsoNormal>    );<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    $self->plugin(<o:p></o:p></p><p class=MsoNormal>        OpenAPI => {<o:p></o:p></p><p class=MsoNormal>            spec  => $spec,<o:p></o:p></p><p class=MsoNormal>            route => $self->routes->under('/api/v1')->to('Auth#under'),<o:p></o:p></p><p class=MsoNormal>            allow_invalid_ref =><o:p></o:p></p><p class=MsoNormal>              1,    # required by our spec because $ref directly under<o:p></o:p></p><p class=MsoNormal>                    # Paths-, Parameters-, Definitions- & Info-object<o:p></o:p></p><p class=MsoNormal>                    # is not allowed by the OpenAPI specification.<o:p></o:p></p><p class=MsoNormal>        }<o:p></o:p></p><p class=MsoNormal style='text-indent:9.75pt'>);<o:p></o:p></p><p class=MsoNormal style='text-indent:9.75pt'><o:p> </o:p></p><p class=MsoNormal>Anyone have ideas for improving this? Do we have to validate the schema every time? Can we move the schema validation into a different module and preload it into Starman using the -M flag so that it’s done 1 time per Starman master instance rather than 1 time per Starman worker instance?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I find “/usr/share/koha/api/v1/app.pl” to be the bane of deployments, as it puts a massive load on a server, when you have multiple Koha instances on the server. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>David Cook<o:p></o:p></p><p class=MsoNormal>Software Engineer<o:p></o:p></p><p class=MsoNormal>Prosentient Systems<o:p></o:p></p><p class=MsoNormal>Suite 7.03<o:p></o:p></p><p class=MsoNormal>6a Glen St<o:p></o:p></p><p class=MsoNormal>Milsons Point NSW 2061<o:p></o:p></p><p class=MsoNormal>Australia<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Office: 02 9212 0899<o:p></o:p></p><p class=MsoNormal>Online: 02 8005 0595<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>