NetWorker REST -ohjelmointirajapinta: HTTP GET -pyynnöt aikakatkaistaan ajoittain
Summary: NetWorker representational state transfer (REST) -sovellusliittymää (API) käytetään tietojen (HTTP GET) pyytämiseen NetWorker-palvelimelta ympäristössä. REST-ohjelmointirajapintakyselyt aikakatkaistaan ajoittain, ja restapi.log näyttää sisäisen palvelimen virheilmoituksen Socket Timeout -aikakatkaisun vuoksi. ...
Symptoms
NetWorker Representational State Transfer (REST) -sovellusliittymää (API) käytetään tietojen (HTTP GET) pyytämiseen NetWorker-palvelimelta ympäristössä. REST-ohjelmointirajapintakyselyt aikakatkaistaan ajoittain, ja restapi.log näyttää sisäisen palvelimen virheilmoituksen Socket Timeout -aikakatkaisun vuoksi.
YYYY-MM-DD HH:MM:SS INFO [https-jsse-nio-9090-exec-26] c.e.n.w.WebApiResponse - Response status Method: 'GET', URI:'v3/global/backups', Status '200'
YYYY-MM-DD HH:MM:SS INFO [https-jsse-nio-9090-exec-26] c.e.n.w.WebApiResponse - Response status Method: 'GET', URI:'v3/global/backups', Status '500'
...
YYYY-MM-DD HH:MM:SS ERROR [https-jsse-nio-9090-exec-11] c.e.n.w.WebApiExceptionMapper - Status 'Internal Server Error', msg: java.io.IOException: Broken pipe
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:333) ~[catalina.jar:9.0.10]
NetWorker Server REST -ohjelmointirajapinnan curl-komento näyttää:
[root@NetworkerServer]# curl -X GET -H "Content-Type: application/json" "https://mynsr.mydomain.com:9090/nwrestapi/v3/global/backups" -u "administrator" -k -1
Enter host password for user 'administrator':
curl: (28) Operation timed out after 300406 milliseconds with 0 out of 0 bytes received
Cause
REST-ohjelmointirajapinta kutsuu "v3/global/backups", "v3/global/jobs", tai "v3/global/volumes" Pelkästään vaativat resursseja vaativat kyselyt ja voivat aiheuttaa pyynnön aikakatkaisun suuremmissa ympäristöissä.
NetWorker REST API -palveluita isännöidään Apache Tomcat Java servlet -säilössä, jota käytetään Java Virtual Machinessa (JVM). REST-ohjelmointirajapinta käyttää JVM-muistia jokaisen pyynnön käsittelyyn, ja on osoitettu, että kaikkea muistia ei vapauteta resursseja vaativan kyselyn jälkeen. JVM-muistin käytön lisääntyminen voi lopulta johtaa muihin vähemmän resursseja vaativiin REST-ohjelmointirajapintapyyntöihin.
Resolution
Älä käytä paljon resursseja vaativia pyyntöjä tietojen noutamiseen NetWorker Serveristä. Esimerkiksi "v3/global/backups" tai "v3/global/clients/CLIENT_NUMBER/backups" määritetyllä aikavälillä voidaan käyttää globaalin "v3/global/backups" hakeaksesi kaikki varmuuskopiot.
Voit esimerkiksi rajoittaa saveTimen tuloksia tietyn ajanjakson välillä. Esimerkki viimeisen 24 tunnin aikana valmistuneiden töiden kyselystä:
../global/backups Esimerkki:
https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/backups?q=saveTime:["START" TO "END"]
https://nsr.amer.lan:9090/nwrestapi/v3/global/backups?q=saveTime:["2024-07-24T00:00:01" TO "2024-07-24T23:59:59"]
../global/clients/client_resourceId_number/backups
https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/clients/client_resourceID_number/backups?q=saveTime:["START" TO "END"]
https://nsr.amer.lan:9090/nwrestapi/v3/global/clients/87.0.90.20.0.0.0.0.196.80.99.102.192.168.9.150/backups?q=saveTime:["2024-07-24T00:00:01" TO "2024-07-24T23:59:59"]
../global/jobs:
https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/jobs?q=endTime:["START" TO "END"]
https://nsr.amer.lan:9090/nwrestapi/v3/global/jobs?q=endTime:["2024-07-29T00:00:01" TO "2024-07-29T23:59:59"]
../global/volumes Esimerkki:
https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes?q=type:"MEDIA_TYPE"&fl=location,name,mode,pool,written
https://nsr.amer.lan:9090/nwrestapi/v3/global/volumes?q=type:"Data Domain"&fl=location,name,mode,pool,written
Additional Information
Katso REST API -kehittäjän oppaasta , joka koskee NetWorker API -kutsuja, "kyselyluettelosuodatin" (q) ja "kenttäluettelosuodatin" (fl) asetuksia.
REST API:n virheenkorjaus on määritelty: NetWorker: REST API -virheenkorjauksen
ottaminen käyttöönVaihtoehtoisesti voidaan käyttää seuraavaa testausta:
Käytä seuraavia vaihtoehtoja REST API -komennossa:
| Asetus | Tarkoitus |
--max-time 3600 |
Asettaa koko siirron (DNS, yhteys, TLS, pyyntö ja vastauksen tekstiosa) kestoksi 3 600 sekuntia (1 tunti). Jos koko toimintoa ei suoriteta loppuun tunnin kuluessa, käpristyminen pysähtyy aikakatkaisuvirheen vuoksi. |
--connect-timeout 60 |
Rajoittaa TCP/TLS-yhteyden muodostamiseen tarvittavan ajan 60 sekuntiin. Jos kihara ei saa yhteyttä 60 sekunnin kuluessa, se epäonnistuu. Kun --retry on käytössä, se voi yrittää uudelleen (alla olevien uudelleenyrityssääntöjen mukaisesti). Tätä arvoa voidaan muuttaa harkintasi mukaan. |
--retry 3 |
Kehottaa käpristymään yrittämään uudelleen jopa kolme kertaa ohimenevien vikojen sattuessa. Tätä arvoa voidaan muuttaa harkintasi mukaan. Tyypillisiä uudelleenyritysten käynnistimiä:
|
--retry-delay 5 |
Määrittää kiinteän 5 sekunnin odotusajan uudelleenyritysten välille. Ohimenevän vian jälkeen curl odottaa 5 sekuntia ennen seuraavaa yritystä. Tätä arvoa voidaan muuttaa harkintasi mukaan. |
-H "X-NW-AUTHC-BASE-URL:REMOTE_AUTHC_SERVER_ADDRESS:9090" |
(Valinnainen.) Tämä vaaditaan vain, jos kirjautumispyyntöjen käsittelyyn käytettävä NetWorker-isäntä on erillään REST API -päätepisteen NetWorker-palvelimesta. Katso: NetWorker REST API: Kuinka käyttää AUTHC-etäpalvelinta RESTAPI-pyyntöjä käsiteltäessä |
Windows Powershell:
curl.exe -k -v --compressed ` --max-time 3600 ` --connect-timeout 60 ` --retry 3 ` --retry-delay 5 ` -u NETWORKER_USERNAME:'PASSWORD' ` -H "Accept: application/json" ` "https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes/ENDPOINT" ` | ConvertFrom-Json ` | ConvertTo-Json -Depth 20 ` | Out-File -Encoding UTF8 OUTPUT_FILE_NAME
-Depth 20 on PowerShellin parametri ConvertTo-Json cmdlet. Se määrittää, kuinka monta tasoa sisäkkäisiä objekteja ja matriiseja sisällytetään, kun PowerShell sarjoittaa tiedot JSON-muotoon. Sisäkkäisten objektien määrä (jos niitä on) voi vaihdella käytetyn REST API -päätepisteen ja mahdollisen kyselyluettelosuodattimen (q) tai "kenttäluettelosuodatin" (fl) käytetyt parametrit. 20:n pitäisi olla enemmän kuin riittävä NetWorker REST API -kutsuille.
Yllä oleva esimerkki loi
volumes.json tiedosto hakemistossa, josta curl.exe ajettiin. Tiedoston sisältö sisältää REST API -tietosisällön:
Linux:
curl -k -v --compressed \ --max-time 3600 \ --connect-timeout 60 \ --retry 3 \ --retry-all-errors \ --retry-delay 5 \ -u NETWORKER_USERNAME:'PASSWORD' \ -H "Accept: application/json" \ "https://NETWORKER_SERVER_ADDRESS:9090/nwrestapi/v3/global/volumes/ENDPOINT" \ -o volumes.json
Esimerkki (ilman -v lyhyyden vuoksi):
[root@nsr ~]# curl -k --compressed \
--max-time 3600 \
--connect-timeout 60 \
--retry 3 \
--retry-all-errors \
--retry-delay 5 \
-u Administrator:'!Password1' \
-H "Accept: application/json" \
"https://nsr.amer.lan:9090/nwrestapi/v3/global/volumes?q=type%3A%22Data%20Domain%22&fl=location,name,mode,pool,written" \
-o volumes.json
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 908 0 908 0 0 22700 0 --:--:-- --:--:-- --:--:-- 22146
Tässä esimerkissä tiedosto "volumes.json" luotiin samaan hakemistoon, josta komento suoritettiin.
JSON-muotoilun jäsentämiseen oikein voidaan käyttää erilaisia työkaluja, käytetyt työkalut voivat vaihdella käyttöjärjestelmän ja asennetun ohjelmiston mukaan.
[root@nsr ~]# cat volumes.json | python -m json.tool
{
"count": 6,
"volumes": [
{
"location": "ddve01.amer.lan",
"mode": "Appendable",
"name": "nsr.amer.lan.dddefault.001",
"pool": "Data Domain Default",
"written": {
"unit": "KB",
"value": 429
}
},
{
"location": "ddve01.amer.lan",
"mode": "Appendable",
"name": "nsr.amer.lan.dddefault.002",
"pool": "Data Domain Default",
"written": {
"unit": "KB",
"value": 25917027
}
},
{
"location": "ddve01.amer.lan",
"mode": "Appendable",
"name": "VMBackupPool.001",
"pool": "VMBackupPool",
"written": {
"unit": "KB",
"value": 209818962
}
},
{
"location": "ddve01.amer.lan",
"mode": "Appendable",
"name": "VMBackupPool.002",
"pool": "VMBackupPool",
"written": {
"unit": "KB",
"value": 2308309500
}
},
{
"location": "ddve02.amer.lan",
"mode": "Appendable",
"name": "nsr.amer.lan_c.dddefault.001",
"pool": "Data Domain Default Clone",
"written": {
"unit": "KB",
"value": 36752
}
},
{
"location": "ddve02.amer.lan",
"mode": "Appendable",
"name": "VMClonePool.001",
"pool": "VMClonePool",
"written": {
"unit": "KB",
"value": 0
}
}
]
}