6 Guidelines

6.1 Technical guidelines

Modularity

The OptServer is a very lightweight service that handles requests as follows:

  • receive a request,
  • save the submitted problem to disk,
  • run a command-line version of MOSEK (mosekcli) to solve the problem and save results on disk,
  • provide the solution to the caller.

In particular a MOSEK installation including the mosekcli binary is required to run OptServer. Typically one would use the MOSEK binary from the same distribution package from which the OptServer was installed, but the setup is modular and it is possible to use any other MOSEK version. In particular updating the solver can be performed independently of updating the OptServer binaries.

Network load

Most of the network load is due to the transfer of the optimization problem from the client to the server. Therefore for long running jobs the transfer time is typically negligible, but for very small problems it will be a significant part of the solution time.

Disk and database

The database is used to store information about jobs (optimization tasks) as well as user information if using the Web GUI. Actual jobs are stored on disk along with log and solutions. Each submitted job is allocated a folder in var/Mosek/jobs/tasks. Therefore, in case of a problem, the status and solution can be recovered from disk.

A suitable amount of free space must be available. OptServer does not delete data for completed jobs.

Load balancing

The OptServer does not implement any load balancing. It launches jobs as requests come along. Users should be careful not to overcommit the CPUs and memory, and ensure there is a sufficient number of licenses (see below).

6.2 The license system

MOSEK is a commercial product that always needs a valid license to work. MOSEK uses a third party license manager to implement license checking. The number of license tokens provided determines the number of optimizations that can be run simultaneously.

A MOSEK license must be available on the machine which hosts the OptServer. Each job submitted to the OptServer will be solved by a new solver process, hence it will require a new license checkout. If the license is not unlimited, then the number of tokens determines the maximal number of jobs that can run simultaneously. In this case setting the license wait flag with the parameter MSK_IPAR_LICENSE_WAIT will force MOSEK to wait until a license token becomes available instead of returning with an error.

6.3 Security

The Web GUI of the OptServer uses HTTPS. To enable the GUI the user must point the installation script to a folder with cert.pem and key.pem files, for example:

./install_MosekServer --inplace \
                      --port $PORT \
                      --mosekdir ../../.. \
                      --database-resource "host=/var/run/postgresql user=$USER dbname=$DBNAME sslmode=disable" \
                      --ssl ../etc/Mosek/ssl \
                      --mode gui

The Web GUI is not be available in HTTP mode, i.e. without encryption. The Web GUI provides role management, in particular creating users and generating their access tokens. When submitting a job the user should provide their access token through the parameter MSK_SPAR_REMOTE_ACCESS_TOKEN in the task.

To enable job submission by anonymous users specify --enable-anonymous in the setup step.