The global variable in the lua script is available for the lifetime of
the ATS. If you use __init__() function to initialize it, you are only
doing it once per VM, not once per request.

e.g. 
https://docs.trafficserver.apache.org/en/latest/admin-guide/plugins/lua.en.html#example-scripts
In "sethost.lua", "HOSTNAME" is set only once per VM when ATS starts.
And each request doing "do_remap" will be getting the "HOSTNAME" to be
used in a header.

Perhaps you can elaborate more on your script and your use case. Maybe
I am not fully clear on your needs.

Thanks.

Kit

On Thu, Jul 14, 2022 at 11:15 PM Vishal Garg <gar...@media.net.invalid> wrote:
>
> Hi @wkaras & @chanshukit,
> Thanks for your responses.
>
> @chanshukit what you've recommended solves one issue of keeping a variable
> alive for the entire lifetime of a single request.
> But this variable is not available for the lifetime of ATS itself. That
> means each new request would initialize it fresh.
>
> @wkaras
> We expect to serve around 300K QPM via ATS. Do you think it's prudent to
> keep loading the same config over and over into the current lua context?
> I am just trying to understand the impact of doing IO (faster because of
> RAM) but still IO.
> I tried mapping the file into memory and it sure works but I am concerned
> if this cause memory issues down the line.
>
> Thanks
>
>
> On Thu, Jul 14, 2022 at 1:10 AM Shu Kit Chan <chanshu...@gmail.com> wrote:
>
> > You can simply use a a global variable in the lua script to store the
> > configuration information
> >
> > And you can initialize that in the __init__ function, which is run at
> > the start of the server.
> >
> > You can see some examples.
> > here -
> > https://docs.trafficserver.apache.org/en/latest/admin-guide/plugins/lua.en.html#ts-stat-create
> > and here -
> > https://docs.trafficserver.apache.org/en/latest/admin-guide/plugins/lua.en.html#example-scripts
> >
> > On Wed, Jul 13, 2022 at 12:00 PM Walt Karas <wka...@yahooinc.com.invalid>
> > wrote:
> > >
> > > There is a way to do this in the C API (global arguments with
> > > TSUserArgSet/Get).  But it doesn't look like these functions are
> > supported
> > > in the Lua API.  Can you keep the data in a file, perhaps on a RAM disk
> > to
> > > make access fast?
> > >
> > > On Wed, Jul 13, 2022 at 4:41 AM Vishal Garg <gar...@media.net.invalid>
> > > wrote:
> > >
> > > > Hey,
> > > > ATS Version: v9.1
> > > > OS: Ubuntu 22.04
> > > >
> > > > I am writing a Lua plugin to allow custom rate limiting logic.
> > > > Right now each request has its own Lua state and thus no variables are
> > > > shared.
> > > >
> > > > I want to have a piece of config loaded which is read only and shared
> > > > across all requests coming in.
> > > > Current implementation loads config from Redis on each request and
> > stores
> > > > it in ctx to be used in multiple stages of a request.
> > > >
> > > > Is there a global variable available in Lua which I can initialize for
> > the
> > > > entire lifetime of ATS running and can be accessed by all requests?
> > > >
> > > > Thanks in advance
> > > > --
> > > > *Vishal Garg*
> > > > Site Reliability Engineer II
> > > > Autoopt-3
> > > >
> >
>
>
> --
> *Vishal Garg*
> Site Reliability Engineer II
> Autoopt-3

Reply via email to